Dans Tomcat server.xml, qu'est-ce que maxThreads et maxConnections?
Je comprends que maxConnections est le nombre de connexions ouvertes sur le serveur.
Et maxThreads est le nombre maximal de threads de traitement des demandes
Mais comment les deux paramètres de configuration fonctionnent ensemble, évidemment, vous ne définissez pas maxConnections sur 1000 et maxThreads sur 10
Quelle est la relation entre les deux paramètres de configuration?
<Connector
port="8443"
protocol="org.Apache.coyote.http11.Http11Protocol"
maxThreads="250"
SSLEnabled="true"
scheme="https" secure="true"
clientAuth="false"
sslProtocol="TLS"
connectiontimeout="20000"
/>
Tomcat peut fonctionner dans 2 modes:
Tomcat 7 est BIO par défaut , bien que le consensus semble être "n'utilisez pas Bio car Nio est meilleur à tous égards". Vous définissez ceci en utilisant le paramètre protocol
dans le server.xml
fichier.
HTTP/1.1
ou org.Apache.coyote.http11.Http11Protocol
org.Apache.coyote.http11.Http11NioProtocol
Si vous utilisez BIO, je pense qu’ils devraient être plus ou moins les mêmes.
Si vous utilisez NIO, alors "maxConnections = 1000" et "maxThreads = 10" pourraient même être raisonnables. Les valeurs par défaut sont maxConnections = 10 000 et maxThreads = 200. Avec NIO, chaque thread peut servir n'importe quel nombre de connexions, en alternant mais en conservant la connexion, de sorte que vous n'avez pas besoin de faire tout le handshaking habituel, ce qui prend beaucoup de temps avec HTTPS, mais pose même un problème avec HTTP. Vous pouvez ajuster le paramètre "keepAlive" pour conserver les connexions plus longtemps, ce qui devrait accélérer les choses.
De documentation Tomcat , Pour bloquer les E/S (BIO), la valeur par défaut de maxConnections
est la valeur de maxThreads
sauf si Executor ( pool de threads) est utilisé. Dans ce cas, la valeur "maxThreads" de Executor sera utilisée à la place. Pour les E/S non bloquantes, cela ne semble pas dépendre de maxThreads
.