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

Зомби-соединения на сервере tomcat при использовании mod_proxy_ajp

Я использую 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, Я никогда не видел ощутимого влияния на производительность при его использовании. Однако ваш пробег может отличаться, поэтому, если вы включите этот параметр, вы должны быть готовы отслеживать потенциальное влияние на производительность.