web-dev-qa-db-fra.com

Apache Proxy TimeOut

J'essaie de comprendre ce qui se passe avec le message suivant dans notre journal d'erreurs 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.as p

Nous exécutons Apache 2.2 avec mod_proxy. Est-ce qu'Apache expire la requête liée à sa valeur TimeOut de 5 minutes dans httpd.conf? (Cela signifie qu'il ne reçoit pas de réponse du serveur distant en 5 minutes.) Ou s'agit-il simplement d'une réponse du serveur distant disant qu'il ne peut pas gérer la connexion?

Apache manque rapidement de MaxClients au moment où je vois cette erreur.

Exemple rapide d'entrée proxy:

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

Vous augmentez le délai d'expiration dans la directive ProxyPass:

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

Les valeurs de délai d'attente sont en secondes.

32

Cela ressemble à votre serveur à https://super-load1-ga.example.com met trop de temps à répondre.

Dans ce scénario, s'il se trouve juste là, le processus Apache va l'attendre. Ce processus est essentiellement bloqué, c'est-à-dire qu'il ne peut rien faire d'autre. Si vous n'expirez pas assez rapidement, vous allez manquer de processus Apache et frapper MaxClients qui semble avoir du sens.

Vous devriez avoir des journaux sur le site super-load1-ga.test.com pour voir combien de temps les demandes prennent, ils doivent prendre un certain âge.

Vous pouvez potentiellement raccourcir le délai d'expiration de la connexion ProxyPass

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

5
Philip Reynolds

Pour répondre à votre question, oui, Apache2 httpd en mode proxy enregistre ce message d'erreur lorsque Apache2 httpd arrive à expiration. Si le serveur connecté à Apache2 httpd en mode proxy était la cause, il y aurait un message différent.

Le message comporte plusieurs parties: The timeout specified has expired est l'équivalent textuel du APR_TIMEUP code d'erreur, voir:

srclib/apr/misc/unix/errorcodes.c

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

Alors proxy: error reading status line from remote server super-load1-ga.test.com est dans

modules/proxy/mod_proxy_http.c

Si vous montez votre niveau de journal à APLOG_DEBUG, vous devriez voir un message supplémentaire: proxy: read timeout aussi.

3
user67717