您的位置:首页 > 理论基础 > 计算机网络

tomcat线程池配置协议Http11NioProtocol解析

2017-03-31 00:00 1291 查看
摘要: org.apache.coyote.http11.Http11NioProtocol协议

如下是tomcat的配置文件server.xml中配置Http11NioProtocol协议的示例

<Connector connectionTimeout="20000" maxThreads="1000" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8443"/>

这里配置的Http11NioProtocol协议的connector是一个Non-blocking NIO connector,即非阻塞连接池。

其中

maxThreads:tomcat可用于请求处理的最大线程数
minSpareThreads:tomcat初始线程数,即最小空闲线程数
maxSpareThreads:tomcat最大空闲线程数,超过的会被关闭

在tomcat中,默认的http连接池是阻塞连接池,按照的是每个连接一个线程的模式运行。这样有多少个不同的concurrent的用户,就要占用多少连接,非常消耗资源。

和默认的http连接池相反的就是使用Http11NioProtocol协议的Non-blocking NIO connector,这个线程池会保持一定数量的线程,当有新的http连接时,由线程池分配一个线程来工作,这种模式最大限度的利用了线程的资源。

如何判断Http11NioProtocol协议的线程池生效了?

当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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息