在 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"
/>
最佳答案
Tomcat 可以在 2 种模式下工作:
- BIO – 阻塞 I/O(每个连接一个线程)
- 蔚来 – non-blocking I/O (连接比线程多)
Tomcat 7是 BIO by default ,尽管共识似乎是“不要使用 BIO,因为 NIO 在各方面都更好”。 (并且 BIO 已经完全是 thrown out of 8.5.0 和更高版本。)您可以使用 protocol
parameter 进行设置。在 server.xml
文件中。
- BIO 将是
HTTP/1.1
或org.apache.coyote.http11.Http11Protocol
- NIO 将是
org.apache.coyote.http11.Http11NioProtocol
如果您使用的是 BIO,那么我相信它们应该或多或少相同。
如果您使用的是 NIO,那么实际上“maxConnections=1000”和“maxThreads=10”甚至可能是合理的。默认值为 maxConnections=10,000 和 maxThreads=200。使用 NIO,每个线程可以服务于任意数量的连接,来回切换但保留连接,因此您不需要进行所有通常的握手,这对于 HTTPS 特别耗时,但对于 HTTP 甚至是一个问题。您可以调整“keepAlive”参数以使连接保持更长时间,这应该会加快一切速度。
关于java - Tomcat - maxThreads 与 maxConnections,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24678661/