以下是tomcat的配置文件server.xml中配置Http11NioProtocol協議的示例apache
<Connector connectionTimeout="20000" maxThreads="1000" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8443"/>
這裏配置的Http11NioProtocol協議的connector是一個Non-blocking NIO connector,即非阻塞鏈接池。tomcat
其中.net
maxThreads:tomcat可用於請求處理的最大線程數
minSpareThreads:tomcat初始線程數,即最小空閒線程數
maxSpareThreads:tomcat最大空閒線程數,超過的會被關閉線程
在tomcat中,默認的http鏈接池是阻塞鏈接池,按照的是每一個鏈接一個線程的模式運行。這樣有多少個不一樣的concurrent的用戶,就要佔用多少鏈接,很是消耗資源。日誌
和默認的http鏈接池相反的就是使用Http11NioProtocol協議的Non-blocking NIO connector,這個線程池會保持必定數量的線程,當有新的http鏈接時,由線程池分配一個線程來工做,這種模式最大限度的利用了線程的資源。server
如何判斷Http11NioProtocol協議的線程池生效了?xml
當tomcat啓動時,會有以下所示的控制檯日誌出現資源
Mar 31, 2017 5:50:35 PM org.apache.coyote.AbstractProtocol init INFO: Initializing ProtocolHandler ["http-nio-8080"] Mar 31, 2017 5:50:35 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector