Вы не упоминаете, какую платформу Вы используете, но в подобных Unix системах tail
команда делает это:
tail -f /var/log/messages
На самом деле существуют реализации tail
для Windows также (например, unxutils).
Оказывается, что эта версия (classes12 - довольно старый) драйвера Oracle имела различные ошибки в ней, которые вызвали мертвую блокировку (как замечено в состоянии TP-Processor2, заключенном в кавычки выше). Это не стало активным, пока мы не переключились на новую среду. Обновление до последней версии (ojdbc14) решило вопрос об основном сервере.
Из описания я предположил бы, что проблема может произойти из-за занимания слишком много времени запросов базы данных. Если запросы займут больше времени, то запрос займет больше времени, и поэтому у Вас будет больше из них работающий сразу. Как Вы видите, у Вас заканчиваются потоки кота. При решении проблемы с базой данных, необходимо быть хорошо.
У меня были лучшие результаты с mod_proxy вместо mod_ajp с точки зрения устойчивости, так попробуйте то решение. Это является неразрушающим - в лучшем случае это решит проблему, и в худшем случае это исключит mod_ajp.
Другой, что это, кажется, что Ваши Коты прекращают отвечать, и все потоки запроса заняты. Сделайте, чтобы Ваша команда разработчиков изучила то, что продолжается - взятие дампа потока и поставка его им будут полезны.
Первая вещь, о которой я думаю, когда я слышу, что сервер работает некоторое время, внезапно замедляется и затем начинает иметь отказы услуги, состоит в том, что он исчерпывает RAM и перегружает подкачку. Я не ясен на том, могли ли отказы AJP, которые Вы видите, быть последовательными к тайм-аутам, но это не кажется абсолютно неблагоразумным; не смотрите очевидный способ, которым это соединилось бы с NIC, все же. В любом случае я рекомендую получить изображение того, что продолжает использование памяти, когда эти события появляются.
Если у Вас заканчивается RAM, Вы, возможно, должны выключить свой Apache MaxClients
и увеличение Ваш ListenBacklog
.
Между прочим, благодарит делать Ваш вопрос так хорошо организованным и завершенным.
Из-за пути работает AJP, постоянные соединения между апачем (использующий или mod_proxy_ajp или mod_jk) могут только быть безопасно закрыты клиентом. В этом случае клиент является апачским рабочим, который открывается и затем держит соединение с котом для жизни для рабочего процесса.
Из-за этого поведения у Вас не может быть большего количества апачских рабочих, чем рабочие потоки кота. Выполнение так заставит дополнительным http рабочим не удаваться соединиться с котом (поскольку принять очередь полна), и отметит Ваш бэкенд как ВНИЗ!
У меня были похожие ошибки журнала в среде Redhat с proxy_ajp и Tomcat. Решено обновлением пакета httpd:
yum update httpd
с:
до:
Затем перезапустили apache, а затем перезапустили Tomcat.
Это исправило для меня!
Добавьте ConnectionTimeout и keepAliveTimeout к AJP-коннектору, находящемуся в /etc/tomcat7/server.xml.
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"
connectionTimeout="10000" keepAliveTimeout="10000" />
Информация о AJP-коннекторе находится по адресу https://tomcat.apache.org/tomcat-7.0-doc/config/ajp.html
connectionTimeout = Количество миллисекунд, в течение которых этот коннектор будет ждать, после принятия соединения, представления линии URI запроса. Значение по умолчанию для коннекторов протокола AJP -1 (т.е. бесконечное).
keepAliveTimeout = Количество миллисекунд, в течение которых этот коннектор будет ждать другого запроса AJP, прежде чем закрыть соединение. По умолчанию используется значение, установленное для атрибута connectionTimeout.
Если значения connectionTimeout и keepAliveTimeout не определены, то соединения AJP будут оставаться живыми бесконечно. Причина, вызывающая множество потоков, по умолчанию максимальное количество потоков - 200.
Я рекомендую установить psi-probe - продвинутый менеджер и монитор для Apache Tomcat, вилка из Lambda Probe. https://code.google.com/p/psi-probe/