Переривчаста помилка під час використання mod_proxy для зворотного проксі-сервера до служби SOAP


17

Я отримую цю помилку кожні кілька хвилин при використанні 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.


Відповідь Девіда Пердю (SetEnv проксі-початковий не об'єднаний 1) є вагомою відповіддю на сьогодні (2016).
MattBianco

Відповіді:


27

У випадку, якщо хтось інший натрапить на це. Це помилка в mod_proxy, яку можна уникнути, помістивши ці рядки у ваш httpd.conf:

SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1

https://isissue.apache.org/bugzilla/show_bug.cgi?id=37770

Для отримання інформації про те, що ці змінні, див. У mod_proxyдокументації . У них є специфічний розділ "Налаштування протоколу", який стосується цих змінних.


5

Зверніть увагу на документацію Apache тут: http://httpd.apache.org/docs/2.2/mod/mod_proxy_http.html

Здається, є умова гонки в mod_proxy_http, але цього можна уникнути, включивши:

SetEnv proxy-initial-not-pooled 1

Що заважає Apache використовувати об'єднане з'єднання, якщо це початковий запит.

У документі зазначається, що цей параметр призведе до зниження продуктивності.


1
proxy-initial-not-pooledефективний лише в тому випадку, якщо у вас є певний патч, який, на мою думку, не є частиною httpd 2.2. Я не знаю про httpd 2.4. Дивіться bz.apache.org/bugzilla/show_bug.cgi?id=37770#c88
kubanczyk

0

Ви також можете придушити це пов'язане повідомлення про помилку ( AH01102: error reading status line from remote server), використовуючи модуль apache mod_reqtimeout та цю конфіденційну директиву:

RequestReadTimeout header=30

Вам, ймовірно, доведеться активувати модуль reqtimeout таким чином:

$ sudo a2enmod reqtimeout
$ sudo apache2ctl restart
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.