Вы испытываете истощение потока в коннекторе Tomcat, из-за чего httpd считает, что app02 находится в плохом состоянии, что, в некотором смысле, так.
Краткий ответ - переключите ваш коннектор Tomcat AJP для использования protocol="org.apache.coyote.ajp.AjpNioProtocol"
Длинный ответ, ну, скорее, длиннее.
mod_jk использует постоянные соединения между httpd и Tomcat.Исторический аргумент для этого - производительность.Это экономит время установления нового TCP-соединения для каждого запроса.Как правило, тестирование показывает, что этот аргумент не выполняется и что время, необходимое для установления нового TCP-соединения или выполнения CPING / CPONG для подтверждения того, что соединение допустимо (что необходимо сделать, если вы используете постоянные соединения), занимаетдостаточно близко в то же время.Тем не менее постоянные соединения являются стандартными с помощью mod_jk.
При использовании постоянных соединений mod_jk создает одно соединение на рабочий поток httpd и кэширует это соединение в рабочем потоке.
Соединение AJP по умолчанию в Tomcat 7.x это БИО разъем.Этот соединитель использует блокирующий ввод / вывод и требует одного потока на соединение.
Проблема возникает, когда в httpd настроено больше рабочих, чем в Tomcat.Изначально все ок.Когда работник httpd встречает первый запрос, который необходимо передать Tomcat, mod_jk создает постоянное соединение для этого работника httpd, и запрос обрабатывается.Последующие запросы, обрабатываемые этим работником httpd, которые необходимо передать Tomcat, будут использовать это кэшированное соединение.Запросы распределяются (эффективно) случайным образом среди работников httpd.Поскольку все больше работников httpd видят свой первый запрос, который необходимо передать Tomcat, mod_jk создает необходимое постоянное соединение для каждого работника.Вполне вероятно, что многие из подключений к Tomcat будут в основном простаивать.Время простоя будет зависеть от нагрузки на httpd и доли тех запросов, которые передаются в Tomcat.
Все хорошо, пока большему количеству работников httpd не потребуется создать соединение с Tomcat, в котором Tomcat имеет потоки.Помните, что для BIO-коннектора Tomcat AJP требуется поток для каждого соединения, поэтому maxThreads - это, по сути, максимальное количество соединений AJP, которое допускает Tomcat.В этот момент mod_jk не может создать запрос, и поэтому инициируется процесс аварийного переключения.
Существует два решения.Первый - тот, который я описал выше - это удалить один поток на ограничение соединения.Переключаясь на соединитель NIO AJP, Tomcat использует поток Poller для поддержки тысяч соединений, передавая только те, у которых есть данные, для обработки в поток для обработки.В этом случае ограничение для обработки Tomcat заключается в том, что maxThreads - это максимальное количество одновременных запросов, которые Tomcat может обработать в этом соединителе.
Второе решение заключается в отключении постоянных соединений.mod_jk создает соединение, использует его для одного запроса, а затем закрывает его.Это уменьшает количество соединений, которые требует mod_jk в любой точке между httpd и Tomcat.
Извините, выше приведен довольно большой текстовый слой.Я также освещал это в различных презентациях, включая , эту .
.