У меня есть Linux-сервер с экземпляром JBoss с apache2. Apache2 будет использовать соединение AJP для обратного прокси-сервера JBoss.
Я нашел эти сообщения в журнале ошибок apache:
[error] (70007)The timeout specified has expired: ajp_ilink_receive() can't receive header
[error] ajp_read_header: ajp_ilink_receive failed
[error] (120006)APR does not understand this error code: proxy: read response failed from 8.8.8.8:8009 (hostname)
[error] (111)Connection refused: proxy: AJP: attempt to connect to 8.8.8.8:8009 (hostname) failed
[error] ap_proxy_connect_backend disabling worker for (hostname)
[error] proxy: AJP: failed to make connection to backend: hostname
[error] proxy: AJP: disabled connection for (hostname)25
Я погуглил, но, похоже, не нашел никаких связанных тем. Есть люди, которые говорят, что такое поведение может быть вызвано неправильной настройкой apache vs jboss. Сообщается, что максимальное количество подключений, которое позволяет apache, намного больше, чем jboss, что приводит к тайм-ауту подключения apache.
Но я знаю, что приложение не используется тысячами одновременных подключений в то время, даже сотнями подключений, поэтому я не верю, что это может быть причиной.
У кого-нибудь есть идея? Или могли подсказать как эту проблему отладить?
Использую эти версии:
Спасибо
4.2.3 jboss, вам следует увеличить количество соединений ajp, которые вы можете разрешить в server.xml. если он не установлен, значение по умолчанию - 40, что слишком мало. Это на 20% больше, чем ваше текущее максимальное количество подключений. Если у вас есть сотни одновременных подключений, установите для него значение 512 и контролируйте его с помощью консоли состояния.
Я считаю, что наблюдаемое вами поведение может быть вызвано следующей проблемой jboss:
https://issues.jboss.org/browse/JBPAPP-366
Проблема приводит к тому, что потоки AJP блокируются на неопределенное время на сокетах со статусом CLOSED_WAIT. Когда достигается предел «maxProcessors» от коннектора AJP, jboss больше не может отвечать на запросы через AJP, что вызывает ошибки, которые вы получили в журнале apache.
Как указано в заявке, это можно решить в несколько шагов:
Вот что заставило jb7.1.1 работать с apache mod_jk, подключающимся через ajp в моем env:
standalone.xml
<profile>
...
<subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="false">
...
<connector name="ajp" protocol="AJP/1.3" scheme="http" socket-binding="ajp"/>
....
</subsystem>
....
</profile>
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
...
<socket-binding name="ajp" port="8009"/>
...
</socket-binding-group>
Кстати, 8.8.8.8 это не Google DNS?