回覆列表
-
1 # 三僡然
-
2 # 小熊社長
使用NIO方式處理併發效能好的前提是 每個請求耗時不能高,但是這樣對現有的request response處理要有額外處理。
如果不能達到這個要求,用 NIO反而會是整體效能下降。
現在一般的處理流程: 請求進來,查資料庫,執行業務邏輯,渲染,然後返回。整體耗時很長。
使用NIO方式處理併發效能好的前提是 每個請求耗時不能高,但是這樣對現有的request response處理要有額外處理。
如果不能達到這個要求,用 NIO反而會是整體效能下降。
現在一般的處理流程: 請求進來,查資料庫,執行業務邏輯,渲染,然後返回。整體耗時很長。
首先
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模式可能會出現未知異常。
本人可以公司程式設計師,專注網際網路技術,大家可以專注我哈