Tomcat-maxThreads vs 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"
/>
2 answers
O Tomcat pode funcionar em dois modos:
- BIO – bloqueio I / O (um tópico por ligação)
- NIO – I/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
ouorg.apache.coyote.http11.Http11Protocol
- o NIO será
org.apache.coyote.http11.Http11NioProtocol
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.
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
.