Я вижу это в Liferay 6 (кластерное веб-приложение на основе Tomcat):
APR does not understand this error code: proxy: read response failed from [::1]:8009 (localhost)
The timeout specified has expired: ajp_ilink_receive() can't receive header
ajp_read_header: ajp_ilink_receive failed
[... the 3 lines above repeated many times ...]
Connection reset by peer: ajp_ilink_receive() can't receive header
APR does not understand this error code: proxy: read response failed from (null) (localhost)
ajp_read_header: ajp_ilink_receive failed
[... the 3 lines above repeated many times ...]
Веб-приложение становится непригодным для использования (веб-интерфейс не отвечает на веб-запросы), когда "Сброс подключения одноранговым узлом"ошибки начинают появляться.
Пока первая проблема (The timeout specified has expired
) покрывается Другой вопрос, что обычно вызывает вторую проблему (Connection reset by peer
), а в чем разница между двумя задачами?
Я знаю, что таймауты обычно являются проблемой, однако после наблюдения аналогичной проблемы, когда размер был проблемой, установленной на самом коннекторе AJP, я думаю, что стоит опубликовать, чтобы включить ведение журнала доступа на вашем коннекторе, чтобы получить правильное ведение журнала (так как это не сделано по умолчанию в подсистемах коннектора jboss) или посмотрите на размер запросов, поскольку apache обычно устанавливает эти типы ограничений выше, чем те, которые могут быть установлены по умолчанию для tomcat или jboss.
1.1.1.1.1 - - [19 / дек / 2019: 14: 33: 53 -0500] «POST / app HTTP / 1.0» 500 532 "-" "-"
Я включил комбинированную запись журнала Apache, поскольку считаю, что размер 532 является подсказкой на ответ от коннектора ajp. В моем случае 90% запросов приходили, за исключением больших объемов документов, которые мои разработчики смогли изучить и идентифицировать. Изучив значения по умолчанию для Apache и коннектора ajp в их документации, я решил удвоить «Максимальный размер сообщения» и получить запрос как 200. Я также заметил меньший размер в журналах доступа Apache, когда он был 200, поэтому вот почему Я думаю, что размер 532 важно отметить.
Основываясь на этом вопросе, который задают другие на разных сайтах, я предлагаю вам установить время ожидания соединения.
Пример ниже.
ProxyPass / ajp://localhost:8009/ timeout=600
https://stackoverflow.com/questions/32093534/ah01030-ajp-ilink-receive-cant-receive-header
mod_proxy_ajp (70007) Указанный тайм-аут истек: ajp_ilink_receive () не может получить заголовок
Если у вас уже есть тайм-аут соединения, указанный в конфигурации, другой пользователь обнаружил, изменил ли он mod_proxy_ajp на mod_jk.