我在
中使用了以下配置的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个活动线程(并行线程)处理我的请求?
答案 0 :(得分:0)
通过一些试验发现,它不足以增加Executors线程数(maxThreads for Executor元素)而且还需要增加Connectors线程数(maxThreads for Connector元素)。这种行为实际上与tomcat documentation所说的
相矛盾“对Executor元素中的名称的引用。如果设置了此属性,并且存在指定的执行程序,则连接器将使用执行程序,并且将忽略所有其他线程属性。请注意,如果没有为连接器指定共享执行程序,然后连接器将使用专用的内部执行程序来提供线程池。“