一尘不染

Tomcat-maxThreads与maxConnections

tomcat

在Tomcat中server.xmlmaxThreadsmaxConnections

我了解这maxConnections是服务器打开的连接数

并且maxThreads是请求处理线程的最大数量

但是两个配置参数如何协同工作,显然您不会将其设置maxConnections为1000和maxThreads10

这两个配置参数之间是什么关系?

<Connector 
    port="8443" 
    protocol="org.apache.coyote.http11.Http11Protocol"
    maxThreads="250" 
    SSLEnabled="true" 
    scheme="https" secure="true"
    clientAuth="false" 
    sslProtocol="TLS" 
    connectiontimeout="20000"
/>

阅读 492

收藏
2020-06-16

共1个答案

一尘不染

Tomcat可以在两种模式下工作:

  • BIO –阻止I / O(每个连接一个线程)
  • NIO非阻塞I / O(连接多于线程)

默认情况下Tomcat
7
BIO,尽管共识似乎是“不要使用Bio,因为Nio在各个方面都更好”。您可以使用文件中的protocol参数进行设置server.xml

  • 生物将是HTTP/1.1org.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”参数以保持较长的连接时间,这样可以加快所有操作。

2020-06-16