Назад | Перейти на главную страницу

Как ограничить количество потоков Tomcat?

У меня 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.