Зомби-соединения на сервере 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 через менеджер хостов на них не влияет)!
Я проверил все возможные параметры, но не смог найти источник этой проблемы.
1 ответ
Вероятно, это пул соединений в mod_proxy. Он откроет соединения с вашим внутренним сервером и оставит их открытыми для повторного использования. Вы можете настроить параметры как для mod_proxy (timeout, ttl и т. Д.) И Tomcat (connectionTimeout), так и для disablereuse
в mod_proxy, который скажет ему не объединять соединения.
В целях устранения неполадок, я бы предложил настройки disablereuse=On
, Это должно позволить вам действительно быстро подтвердить, что потоки, которые вы видите, остаются открытыми из-за настроек пула.
После того, как вы подтвердили проблему, вы можете оставить disablereuse=On
или вы можете настроить параметры пула. Лично я предпочитаю disablereuse
так как это легче настроить и легче устранять неполадки, когда есть проблема.
Кроме того, вопреки тому, что часто говорят о disablereuse
Я никогда не видел ощутимого влияния на производительность при его использовании. Ваш пробег может отличаться, поэтому, если вы включите этот параметр, вы должны быть готовы к мониторингу потенциального влияния на производительность.