Tomcat NIO - 实际使用情况

时间:2015-09-27 05:50:35

标签: apache tomcat nio

我们一直在生产中使用Tomcat和axis2作为SOAP服务。

但是,在一些高流量的情况下,我们发现CPU一直很高。

我们发现netstat在那段时间内,我们有很多来自外部客户端的连接。

我们认为CPU高可能是由于这些线程之间的高上下文切换,因为这些线程本质上是阻塞的。

因此,我们认为我们可以在tomcat连接器中启用NIO。我们认为这可以减少处理多个连接的线程数。

但是,当我们运行启用NIO并运行流量时,我们从线程堆栈转储中发现apache tomcat中的线程数量相同且CPU仍然很高。

唯一的区别是转储中的线程名称(NIO - http-exec)。

此配置有什么问题?

server.xml中

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

由于maxThreads仍然存在,因此创建了许多线程来处理NIO和BIO中的高流量。

我认为启用NIO会减少处理来自客户端的HTTP请求的线程。

我是否应该对HTTPServlet代码进行更改以实际使用NIO。

谢谢和问候, Sashi

0 个答案:

没有答案