Я использую Tomcat Server 7 с модулем apache mode_proxy_ajp для обслуживания веб-сайта. Вот моя конфигурация коннектора ajp:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" connectionTimeout="20000"
minSpareThreads="10" maxThreads="512" executor="tomcatThreadPool_1" acceptCount="128"
acceptorThreadCount="2" maxKeepAliveRequests="50" keepAliveTimeout="10000" URIEncoding="UTF-8"/>
И вот конфигурация исполнителя:
<Executor name="tomcatThreadPool_1" namePrefix="catalina-exec-" connectionTimeout="20000"
minSpareThreads="10" maxSpareThreads="50" maxThreads="512" acceptCount="128"/>
теперь проблема в том, что много раз я вижу много соединений со статусом S (служба) в диспетчере tomcat (статус сервера), примерно так:
эти соединения, кажется, открываются в течение длительного времени, но у них нет ни отправки, ни приема, ни даже фонового выполнения кода и потребления процессора (поэтому я предполагаю, что мой код сервлета в порядке), они выглядят как просто некоторые соединения зомби, и они не будут уничтожать до перезапуска сервера tomcat (перезапуск сервера apache и даже виртуальных хостов tomcat через менеджер хостов не влияет на них)!
Я проверил все возможные связанные параметры, но не смог найти источник этой проблемы.
Это вероятно объединенные соединения в mod_proxy. Он откроет подключения к вашему внутреннему серверу и оставит их открытыми для повторного использования. Вы можете настроить параметры как для mod_proxy (тайм-аут, ttl и т. Д.), Так и для Tomcat (connectionTimeout), либо вы можете установить disablereuse
в mod_proxy, который скажет ему не объединять соединения.
В целях устранения неполадок я бы предложил установить disablereuse=On
. Это должно позволить вам очень быстро подтвердить, что потоки, которые вы видите, остаются открытыми из-за настроек пула.
После подтверждения проблемы вы можете оставить disablereuse=On
или вы можете настроить параметры объединения. Лично я предпочитаю disablereuse
так как его проще настроить и легче устранять неполадки при возникновении проблемы.
Кроме того, вопреки тому, что часто говорят о disablereuse
, Я никогда не видел ощутимого влияния на производительность при его использовании. Однако ваш пробег может отличаться, поэтому, если вы включите этот параметр, вы должны быть готовы отслеживать потенциальное влияние на производительность.