tuning maxthreads for java tomcat

java - for - Tomcat-maxThreads vs maxConnections



tomcat 6 maxthreads (2)

De la documentación de Tomcat , para bloquear E / S (BIO), el valor predeterminado de maxConnections es el valor de maxThreads menos que se utilice Executor (grupo de subprocesos), en cuyo caso se utilizará el valor de ''maxThreads'' de Executor. Para IO no bloqueante, no parece depender de maxThreads .

En Tomcat server.xml, ¿qué es maxThreads versus maxConnections?

Entiendo que maxConnections es la cantidad de conexiones abiertas al servidor

Y maxThreads es la cantidad máxima de subprocesos de procesamiento de solicitud

Pero cómo funcionan los dos parámetros de configuración, obviamente, no establecerá maxConnections en 1000 y maxThreads en 10

¿Cuál es la relación entre los dos parámetros de configuración?

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


Tomcat puede funcionar en 2 modos:

  • BIO - bloqueo de E / S (un hilo por conexión)
  • NIO - E / S sin blacking (muchas más conexiones que hilos)

Tomcat 7 es BIO por defecto , aunque el consenso parece ser "no use Bio porque Nio es mejor en todos los sentidos". Configura esto usando el parámetro de protocol en el archivo server.xml .

  • BIO será HTTP/1.1 o org.apache.coyote.http11.Http11Protocol
  • NIO será org.apache.coyote.http11.Http11NioProtocol

Si está utilizando BIO, entonces creo que deberían ser más o menos lo mismo.

Si está utilizando NIO, en realidad "maxConnections = 1000" y "maxThreads = 10" podrían ser razonables. Los valores predeterminados son maxConnections = 10,000 y maxThreads = 200. Con NIO, cada subproceso puede servir para cualquier cantidad de conexiones, alternando pero reteniendo la conexión, por lo que no es necesario realizar todos los acuses de recibo habituales, que consumen mucho tiempo con HTTPS, pero incluso un problema con HTTP. Puede ajustar el parámetro "keepAlive" para mantener las conexiones durante más tiempo y esto acelerará todo.