Apache Proxy TimeOut

18

Estoy tratando de entender lo que está sucediendo con el siguiente mensaje en nuestro registro de errores Apache 2.2:

Wed May 18 21:03:29 2011] [error] [client 172.20.10.10] (70007)The timeout specified has expired: proxy: error reading status line from remote server super-load1-ga.test.com, referer: https://tester2.test.com/boom/ga/inside.aspag

Estamos ejecutando Apache 2.2 con mod_proxy. ¿Apache está apagando la solicitud relacionada con su valor TimeOut de 5 minutos en httpd.conf? (Lo que significa que no recibe una respuesta del servidor remoto en 5 minutos). ¿O es simplemente una respuesta del servidor remoto que dice que no puede manejar la conexión?

Apache se queda rápidamente sin sus MaxClients cuando veo este error.

Ejemplo rápido de entrada de proxy:

ProxyPass /boom/ga https://super-load1-ga.test.com
ProxyPassReverse /boom/ga https://super-load1-ga.test.com
roacha
fuente

Respuestas:

28

Aumenta el tiempo de espera en la directiva ProxyPass :

ProxyPass /boom/ga https://super-load1-ga.test.com connectiontimeout=300 timeout=300

Los valores de tiempo de espera son en segundos .

uı6ʎɹnɯ ꞁəıuɐp
fuente
66
Si aún no está definiendo el argumento de tiempo de espera de ProxyPass, Timeoutse utilizará su valor global . Consulte httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypass httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxytimeout y httpd.apache.org/docs/2.2/mod/core. html # timeout
sincronización
También estoy obteniendo un error. El tiempo de espera especificado ha expirado ... Tengo ProxyRequests desactivado, ¿está relacionado? Debería hacerlo para aumentar el tiempo de espera ......
Ashish Karpe
5

Parece que su servidor https://super-load1-ga.example.comtarda demasiado en responder.

En ese escenario, si simplemente se queda allí, el proceso de Apache lo esperará. Ese proceso está esencialmente bloqueado, es decir, no puede hacer nada más. Si no agota el tiempo lo suficientemente rápido, se quedará sin procesos de Apache y llegará a MaxClients, lo que parece tener sentido.

Debería tener registros en el sitio super-load1-ga.test.com para ver cuánto tardan las solicitudes, deben estar tomando una edad.

Potencialmente podría acortar el tiempo de espera en la conexión ProxyPass

http://httpd.apache.org/docs/current/mod/mod_proxy.html#workers

Philip Reynolds
fuente
Gracias por la gran respuesta Phil. Entonces, ¿cree que esto está afectando el valor principal de tiempo de espera de httpd.conf de 5 minutos y Apache está agotando la sesión? Debido a que no tengo un tiempo de espera específico de proxy establecido, sería predeterminado. En la sugerencia de tiempo de espera de Proxy, ¿cree que debería usar la variable ProxyTimeout o el comando ProxySet? (ProxySet connectiontimeout = 5 timeout = 30)
roacha
2

Para responder a su pregunta, sí, Apache2 httpd en modo proxy registra ese mensaje de error cuando Apache2 httpd agota el tiempo de espera. Si el servidor conectado al Apache2 httpd en modo proxy fuera la causa, habría un mensaje diferente.

El mensaje tiene múltiples partes: The timeout specified has expiredes el texto equivalente del APR_TIMEUPcódigo de error, vea:

srclib / apr / misc / unix / errorcodes.c

case APR_TIMEUP:
    return "The timeout specified has expired";

Entonces proxy: error reading status line from remote server super-load1-ga.test.comestá en

modules / proxy / mod_proxy_http.c

Si aumenta su nivel de registro a APLOG_DEBUG, debería ver un mensaje adicional: proxy: read timeouttambién.


fuente