У меня Tomcat 7 работает на CentOS с низким объемом памяти. В настоящее время он имеет 2 разъема для портов 80 и 443. Важные параметры конфигурации:
<Connector port="80" protocol="HTTP/1.1" executor="tomcatThreadPool"
connectionTimeout="10000"
keepAliveTimeout="60000"
<Connector port="443" protocol="HTTP/1.1" executor="tomcatThreadPool"
SSLEnabled="true" scheme="https" secure="true"
connectionTimeout="10000"
keepAliveTimeout="60000"
Оба коннектора привязаны к исполнителю:
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="100" minSpareThreads="3"
maxIdleTime="120000" />
При первом запуске tomcat запускается около 50 потоков. После подключения к веб-приложению примерно 15-20 пользователей, оно увеличивается примерно до 60. (я считаю потоки tomcat с помощью команды ps -eLf | grep java |grep tomcat |wc -l
)
У меня около 4 подключений в минуту, это не больше 5 из-за характера моего приложения. Поэтому я хочу, чтобы tomcat запускал минимально возможные потоки. Поскольку я настроил минимум 3 резервных потока и время активности составляет 2 минуты, оно не должно превышать 20 или около того. Но я ошибаюсь.
Как я могу ограничить количество потоков Tomcat до минимального значения, например 20 или 30?
В соответствии с эта документация количество минимальных потоков можно настроить с помощью следующего параметра:
Attribute
Description
minSpareThreads
(int) The minimum number of threads always kept alive, default is 25
В соответствии с эта документация это могло быть реализовано следующим образом:
<Connector port="8080" address="localhost"
minSpareThreads="20" />
At server startup, the HTTP Connector will create a number of processing threads based on the value configured for the minSpareThreads attribute.