J'obtiens cette erreur toutes les quelques minutes lorsque j'utilise mod_proxy comme proxy inverse d'un service Web SOAP. Il y a probablement 3 ou 4 requêtes par seconde, donc nous parlons d'environ 1 ou 2 sur mille qui ont cette erreur.
[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
Cela entraîne l'échec de la demande. Si le client se connecte directement au serveur soap sans utiliser le proxy, le succès est de 100%, donc le problème semble être dans le proxy
La configuration ressemble à ceci. Le but est de basculer vers un serveur de sauvegarde si le serveur principal n'est pas disponible:
<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
Quelqu'un a-t-il rencontré cela et trouvé un correctif? Il y a quelques mentions dans les rapports de bogues mais aucune solution. La seule chose qui peut être inhabituelle est que la demande du client peut être de 100 Mo ou plus, de sorte que la demande peut prendre un peu plus de temps que ce à quoi vous vous attendez pour un appel SOAP.
la source
Réponses:
Au cas où quelqu'un d'autre se heurterait à cela. C'est un bogue dans mod_proxy qui peut être évité en mettant ces lignes dans votre httpd.conf:
https://issues.apache.org/bugzilla/show_bug.cgi?id=37770
Pour plus d'informations sur ce que font ces variables, consultez la
mod_proxy
documentation . Ils ont une section spécifique, Protocol Adjustment, qui traite de ces variables.la source
Prenez note de la documentation Apache ici: http://httpd.apache.org/docs/2.2/mod/mod_proxy_http.html
Il semble qu'il y ait une condition de concurrence dans mod_proxy_http, mais elle peut être évitée en incluant:
Ce qui empêche Apache d'utiliser une connexion groupée s'il s'agit d'une demande initiale.
Le document note que ce paramètre entraînera une dégradation des performances.
la source
proxy-initial-not-pooled
n'est efficace que si vous avez un patch spécifique, qui, je crois, ne fait pas partie de httpd 2.2. Je ne connais pas httpd 2.4. Voir bz.apache.org/bugzilla/show_bug.cgi?id=37770#c88Vous pouvez également supprimer ce message d'erreur associé (
AH01102: error reading status line from remote server
) en utilisant le module apache mod_reqtimeout et cette directive conf:Vous devrez probablement activer le module reqtimeout, comme suit:
la source