Recibo este error cada pocos minutos cuando uso mod_proxy como proxy inverso a un servicio web SOAP. Probablemente haya 3 o 4 solicitudes por segundo, por lo que estamos hablando de 1 o 2 de cada mil que tienen este error.
[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
Esto hace que la solicitud falle. Si hago que el cliente se conecte directamente al servidor de jabón sin usar el proxy, el éxito es del 100%, por lo que el problema parece estar en el proxy
La configuración se ve así. El propósito es cambiar a un servidor de respaldo si el primario no está 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
¿Alguien se ha topado con esto y ha encontrado una solución? Hay algunas menciones en los informes de errores, pero no hay soluciones. Lo único que puede ser inusual es que la solicitud del cliente podría ser de 100 MB o más, por lo que la solicitud podría demorar un poco más de lo que esperaría para una llamada SOAP.
fuente
Respuestas:
En caso de que alguien más se encuentre con esto. Este es un error en mod_proxy que se puede evitar colocando estas líneas en su httpd.conf:
https://issues.apache.org/bugzilla/show_bug.cgi?id=37770
Para obtener información sobre qué hacen estas variables, consulte la
mod_proxy
documentación . Tienen una sección específica, Ajuste de protocolo, que aborda estas variables.fuente
Tome nota de la documentación de Apache aquí: http://httpd.apache.org/docs/2.2/mod/mod_proxy_http.html
Parece que hay una condición de carrera en mod_proxy_http, pero se puede evitar incluyendo:
Lo que evita que Apache use una conexión agrupada si se trata de una solicitud inicial.
El documento sí señala que esta configuración dará una disminución de rendimiento.
fuente
proxy-initial-not-pooled
solo es efectivo si tiene un parche específico, que creo que no forma parte de httpd 2.2. No sé sobre httpd 2.4. Ver bz.apache.org/bugzilla/show_bug.cgi?id=37770#c88También puede suprimir este mensaje de error relacionado (
AH01102: error reading status line from remote server
) utilizando el módulo apache mod_reqtimeout y esta directiva conf:Probablemente tendrá que habilitar el módulo reqtimeout, de la siguiente manera:
fuente