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 ответа:
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
.