Tomcat-maxThreads vs maxConnections

No servidor Tomcat.xml what is maxThreads versus maxConnections

eu entendo que maxConnections é a quantidade de conexões abertas ao servidor

e maxThreads é o número máximo de tarefas de processamento de pedidos

mas como os dois parâmetros de configuração funcionam em conjunto, obviamente não irá definir maxConnections para 1000 e maxThreads para 10

Qual é a relação entre os dois parâmetros de configuração?

<Connector 
    port="8443" 
    protocol="org.apache.coyote.http11.Http11Protocol"
    maxThreads="250" 
    SSLEnabled="true" 
    scheme="https" secure="true"
    clientAuth="false" 
    sslProtocol="TLS" 
    connectiontimeout="20000"
/>
 55
Author: Basil Bourque, 2014-07-10

2 answers

O Tomcat pode funcionar em dois modos:

  • BIO – bloqueio I / O (um tópico por ligação)
  • NIOI/o sem bloqueio (muitas mais ligações do que threads)

Tomcat 7 is BIO by default, although consensus seems to be "don't use Bio because Nio is better in every way". Você configurou isto usando o protocol parâmetro no ficheiro server.xml.

  • BIO será HTTP/1.1 ou org.apache.coyote.http11.Http11Protocol
  • o NIO será org.apache.coyote.http11.Http11NioProtocol
Se estás a usar BIO, acho que devem ser mais ou menos iguais.

Se você está usando NIO então na verdade "maxConnections = 1000"e" maxThreads=10 " pode até ser razoável. Os valores por omissão são maxConnections = 10,000 e maxThreads = 200. Com o NIO, cada fio pode servir qualquer número de conexões, alternando para trás e para a frente, mas mantendo a conexão para que você não precisa fazer todo o habitual aperto de mão, que é especialmente demorado com HTTPS, mas até um problema com HTTP. Você pode ajustar o parâmetro "keepAlive" para manter conexões por mais tempo e isso deve acelerar tudo.

 77
Author: Tim Cooper, 2018-08-27 09:18:07

A partir de documentação do Tomcat , para bloquear I / O (BIO), o valor por omissão de maxConnections é o valor de maxThreads a menos que Executor (Conjunto de linhas) seja usado nesse caso, será usado o valor de 'maxThreads' do Executor. Para IO não bloqueador, não parece depender de maxThreads.

 4
Author: Swapnil, 2014-07-10 14:57:23