Tomcat不遵守catalina.properties和activeCount中的maxThreads配置,不超过200

时间:2014-01-23 12:37:07

标签: java multithreading tomcat threadpool threadpoolexecutor

我在

中使用了以下配置的tomcat实例

线程的catalina.properties

server.service-Catalina.executor-tomcatThreadPool.maxThreads=300 server.service-Catalina.executor-tomcatThreadPool.minSpareThreads=300

server.service-Catalina.connector.http1.1.executor=tomcatThreadPool server.service-Catalina.connector.http1.1.protocol=HTTP/1.1 server.service-Catalina.connector.http1.1.connectionTimeout=20000 server.service-Catalina.connector.http1.1.acceptCount=300 server.service-Catalina.connector.http1.1.maxKeepAliveRequests=15

我想要300个线程来处理请求。

通过上面的配置,tomcat启动了300个线程,我可以看到JConsole 300工作线程正在运行。但是当我用300个并发请求加载时,activeCount只会到200。 为什么tomcat不能有超过200个活动线程(并行线程)处理我的请求?

1 个答案:

答案 0 :(得分:0)

通过一些试验发现,它不足以增加Executors线程数(maxThreads for Executor元素)而且还需要增加Connectors线程数(maxThreads for Connector元素)。这种行为实际上与tomcat documentation所说的

相矛盾

“对Executor元素中的名称的引用。如果设置了此属性,并且存在指定的执行程序,则连接器将使用执行程序,并且将忽略所有其他线程属性。请注意,如果没有为连接器指定共享执行程序,然后连接器将使用专用的内部执行程序来提供线程池。“