首頁>Club>
既然NIO比BIO處理併發的能力高上一大截,為什麼tomcat還是預設的bio模式呢?
4
回覆列表
  • 1 # 三僡然

    首先

    Tomcat附帶3個HTTP(s)聯結器:

    NIO(org.apache.coyote.Http11Protocol):這是預設且最穩定的聯結器。

    BIO(org.apache.coyote.Http11NioProtocol):這是一個非阻塞的IO聯結器,在大多數情況下應該提供稍好的效能。

    APR(org.apache.coyote.Http11AprProtocol):此聯結器使用Apache Portable Runtime和OpenSSL而不是Java對應物。因此,效能通常更好,尤其是在使用SSL時。

    自己可以透過配置調整 tomcat聯結器。

    tomcat官網解釋如下

    大概意思。

    預設的HTTP和AJP聯結器實現已從Java阻塞IO實現(BIO)切換到Java非阻塞IO實現(NIO)。仍然可以使用BIO,但使用非阻塞IO的Servlet 3.1和WebSocket 1.0功能將使用阻塞IO,這可能會導致意外的應用程式行為。

    究其根本就是tomcat實現 主要是servlet,只能使用BIO,如果調整為NIO模式可能會出現未知異常。

    本人可以公司程式設計師,專注網際網路技術,大家可以專注我哈

  • 2 # 小熊社長

      使用NIO方式處理併發效能好的前提是 每個請求耗時不能高,但是這樣對現有的request response處理要有額外處理。  

    如果不能達到這個要求,用 NIO反而會是整體效能下降。  

    現在一般的處理流程: 請求進來,查資料庫,執行業務邏輯,渲染,然後返回。整體耗時很長。

  • 中秋節和大豐收的關聯?
  • 生薑裹鹽後放哪裡合適?