2011-06-19 50 views

回答

17

听起来像是你应该留在默认;-)

严重的:你应该设置最大并行连接的数量取决于预期的Tomcat的使用,也对您的服务器上的内核数量。处理器上的核心越多=>可执行的并行线程越多。

在这里看到如何配置?

的Tomcat 6:http://tomcat.apache.org/tomcat-6.0-doc/config/executor.html

的Tomcat 7:http://tomcat.apache.org/tomcat-7.0-doc/config/executor.html

+0

嗨,我正在运行弹簧批量远程分区应用程序和使用弹簧集成入站网关。我已将并发性设置为10,但我看到它总是运行最多8个线程。这与服务器的CPU核心数量有关吗?有什么办法可以增加线程并发?正在运行的进程的CPU使用率不太高。 http://stackoverflow.com/questions/24575008/spring-batch-admin-remote-partition-steps-running-maximum-8-threads-even-though – vishal

17

你将不得不调整根据您的环境吧。

有时候增加backlog(acceptCount)而不是最大线程数量会更有用。

说,而不是

<Connector ... maxThreads="500" acceptCount="50" 

您使用

<Connector ... maxThreads="300" acceptCount="150" 

,你可以在某些情况下获得更好的性能,原因会有更少的线程争议的资源和backlog队列会被消耗掉更快。

无论如何,你必须做一些基准测试才能真正知道什么是最好的。

+0

从[链接](http://tomcat.apache.org /tomcat-8.0-doc/config/http.html) –

9

Tomcat Documentation

MAXCONNECTIONS 当这个数字已经达到,服务器会接受,但不是过程,一个进一步的连接。 一旦达到限制,操作系统仍然可以接受基于acceptCount设置的连接。 (当所有可能的请求处理线程都在使用时,传入连接请求的最大队列长度,队列满时收到的任何请求都将被拒绝,缺省值为100.)对于BIO,缺省值是maxThreads的值,除非执行程序在这种情况下,默认值将是执行程序的maxThreads的值。对于NIO和NIO2,缺省值为10000.对于APR/native,缺省值为8192.请注意,对于Windows上的APR/native,配置的值将减少到1024的最大倍数,小于或等于maxConnections。这是出于性能原因而完成的。

maxThreads
请求处理线程的最大数量由该连接器,它因此确定可处理的同时请求的最大数目来创建。如果未指定,则将此属性设置为200.如果执行程序与此连接程序关联,则该属性将被忽略,因为连接程序将使用执行程序而不是内部线程池执行任务。