Я получаю эту ошибку каждые несколько минут при использовании mod_proxy в качестве обратного прокси-сервера для веб-службы SOAP. Вероятно, в секунду происходит 3 или 4 запроса, поэтому мы говорим об 1 или 2 из каждой тысячи, у которых есть эта ошибка.
[Tue Nov 23 11:44:14 2010] [error] [client 172.16.1.31] (20014)Internal error: proxy: error reading status line from remote server soap1.server:8888
[Tue Nov 23 11:44:14 2010] [error] [client 172.16.1.31] proxy: Error reading from remote server returned by /someapp/path/to/web/service
Это приводит к сбою запроса. Если у меня есть клиент, подключающийся напрямую к серверу мыла без использования прокси, успех составляет 100%, поэтому проблема заключается в прокси
Конфигурация выглядит следующим образом. Цель состоит в том, чтобы переключиться на резервный сервер, если основной недоступен:
<Proxy balancer://apicluster>
BalancerMember http://soap1.server:8888 lbset=0
BalancerMember http://soap2.server:8888 lbset=1
</Proxy>
ProxyPass /someapp balancer://apicluster/someapp
ProxyPassReverse / balancer://apicluster/someapp
Кто-нибудь сталкивался с этим и нашел исправление? В сообщениях об ошибках есть некоторые упоминания, но нет решений. Единственное, что может быть необычным, - это то, что запрос клиента может быть размером 100 МБ или более, поэтому запрос может занять немного больше времени, чем можно было бы ожидать для вызова SOAP.
источник
Ответы:
В случае, если кто-то еще сталкивается с этим. Это ошибка в mod_proxy, которую можно избежать, поместив эти строки в ваш httpd.conf:
https://issues.apache.org/bugzilla/show_bug.cgi?id=37770
Для информации о том, что эти переменные, смотрите
mod_proxy
документацию . У них есть специальный раздел, «Настройка протокола», в котором рассматриваются эти переменные.источник
Обратите внимание на документацию Apache здесь: http://httpd.apache.org/docs/2.2/mod/mod_proxy_http.html.
Кажется, в mod_proxy_http есть условие гонки, но этого можно избежать, включив:
Что мешает Apache использовать пул соединений, если это начальный запрос.
В документе отмечается, что этот параметр приведет к снижению производительности.
источник
proxy-initial-not-pooled
эффективен только в том случае, если у вас есть определенный патч, который, я считаю, не является частью httpd 2.2. Я не знаю о httpd 2.4. См. Bz.apache.org/bugzilla/show_bug.cgi?id=37770#c88Вы также можете подавить это сообщение об ошибке (
AH01102: error reading status line from remote server
) с помощью модуля apache mod_reqtimeout и этой директивы conf:Вам, вероятно, придется включить модуль reqtimeout, как показано ниже:
источник