Tomcat – maxThreads vs maxConnections

Dans Tomcat server.xml, quelle est la valeur maxThreads par rapport à maxConnections?

Je comprends que maxConnections est la quantité de connexions ouvertes sur le serveur

Et maxThreads est le nombre maximal de threads de traitement des requêtes

Mais comment les deux parameters de configuration fonctionnent ensemble, évidemment vous ne définissez pas maxConnections à 1000 et maxThreads à 10

Quelle est la relation entre les deux parameters de configuration?

 

Tomcat peut fonctionner en 2 modes:

  • BIO – blocage des E / S (un thread par connexion)
  • NIO – E / S non bloquantes (beaucoup plus de connexions que de threads)

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 cela en utilisant le paramètre de protocol dans le fichier server.xml .

  • BIO sera HTTP/1.1 ou org.apache.coyote.http11.Http11Protocol
  • NIO sera 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 desservir un nombre quelconque de connexions, en basculant entre les deux mais en conservant la connexion. Vous n’avez donc pas à effectuer tous les échanges habituels, ce qui prend beaucoup de temps avec HTTPS mais avec HTTP. Vous pouvez ajuster le paramètre “keepAlive” pour conserver les connexions plus longtemps, ce qui devrait accélérer le processus.

À partir de la 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 de maxThreads d’Executor sera utilisée. Pour les E / S non bloquantes, cela ne semble pas dépendre de maxThreads .