在Tomcat server.xml中,什么是maxThreadsmaxConnections
我知道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可以在两种模式下工作:

  • BIO -阻止I/O(每个连接一个线程)
  • NIO non-blocking I/O(连接多于线程)

  • Tomcat 7BIO by default,尽管共识似乎是“不要使用Bio,因为Nio在各个方面都更好”。您可以使用protocol文件中的 server.xml parameter进行设置。
  • BIO将是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”参数,以保持较长的连接时间,这将加快所有速度。

    10-03 00:16