在Tomcat server.xml中,maxThreads与maxConnections的对比是什么
我了解maxConnections是打开服务器的连接数量
maxThreads是请求处理线程的最大数量
但两个配置参数如何协同工作,显然你不会将maxConnections设置为1000而maxThreads设置为10
两个配置参数之间有什么关系?
<Connector
port="8443"
protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="250"
SSLEnabled="true"
scheme="https" secure="true"
clientAuth="false"
sslProtocol="TLS"
connectiontimeout="20000"
/>
答案 0 :(得分:89)
Tomcat可以在两种模式下工作:
Tomcat 7是BIO by default,虽然共识似乎是“不要使用Bio,因为Nio在各方面都更好”。您可以使用server.xml
文件中的protocol
parameter进行设置。
HTTP/1.1
或org.apache.coyote.http11.Http11Protocol
org.apache.coyote.http11.Http11NioProtocol
如果您正在使用BIO,那么我相信它们应该或多或少相同。
如果您正在使用NIO,那么实际上“maxConnections = 1000”和“maxThreads = 10”甚至可能是合理的。默认值为maxConnections = 10,000和maxThreads = 200。使用NIO,每个线程可以提供任意数量的连接,来回切换但保留连接,因此您不需要进行所有通常的握手,这对于HTTPS来说尤其耗时,但即使是HTTP问题也是如此。您可以调整“keepAlive”参数以保持连接更长时间,这样可以加速所有事情。
答案 1 :(得分:6)
从Tomcat documentation开始,对于阻止I / O(BIO),默认值maxConnections
是maxThreads
的值,除非使用Executor(线程池)在这种情况下,将使用来自Executor的'maxThreads'的值。对于非阻塞IO,它似乎不依赖于maxThreads
。