Tomcat-maxThreads vs maxConnections


в сервере Tomcat.XML и какое значение maxthreads равно против maxConnections

Я понимаю, что maxConnections-это количество подключений, открытых для сервера

и maxThreads-это максимальное количество потоков обработки запросов

но как два параметра конфигурации работают вместе, очевидно, вы не будете устанавливать maxConnections на 1000 и maxThreads на 10

какая связь между двумя параметрами конфигурации?

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

2 ответа:

Tomcat может работать в 2 режимах:

Tomcat 7 и био по умолчанию, хотя консенсус, кажется, "не используйте био, потому что Nio лучше во всех отношениях". Вы устанавливаете это с помощью protocol параметр на .

  • био будет HTTP/1.1 или org.apache.coyote.http11.Http11Protocol
  • НИО будет org.apache.coyote.http11.Http11NioProtocol

если вы используете БИО, то я считаю, что они должны быть более или менее одинакова.

если вы используете NIO, то на самом деле" maxConnections=1000 "и" maxThreads=10 " могут быть даже разумными. По умолчанию maxConnections=10,000 и maxThreads=200. С NIO, каждый поток может служить любое количество соединений, переключая назад и далее, но сохраняя соединение, поэтому вам не нужно делать все обычные рукопожатия, которые особенно трудоемки с HTTPS, но даже проблема с HTTP. Вы можете настроить параметр "keepAlive", чтобы поддерживать соединения дольше, и это должно ускорить все.

С документация Tomcat, для блокировки ввода / вывода (био), значение по умолчанию maxConnections значение maxThreads если исполнитель (пул потоков) используется в этом случае вместо него будет использоваться значение 'maxThreads' от Executor. Для неблокирующего ввода-вывода он, похоже, не зависит от maxThreads.