Apache Proxy TimeOut


18

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.asp

Nous exécutons Apache 2.2 avec mod_proxy. Est-ce que 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

Réponses:


28

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 .


6
Si vous ne définissez pas déjà l'argument de délai d'expiration ProxyPass, votre Timeoutvaleur globale sera utilisée. Voir httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypass httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxytimeout et httpd.apache.org/docs/2.2/mod/core. html # timeout
synchronisation

Je reçois également une erreur Le délai spécifié a expiré .... J'ai désactivé ProxyRequests, est-ce lié? dois-je le faire pour augmenter le délai d'attente ......
Ashish Karpe

5

Il semble que votre serveur https://super-load1-ga.example.comprenne trop de temps pour 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, elles 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


Merci pour la grande réponse Phil. Vous pensez donc que cela atteint la valeur principale de httpd.conf TimeOut de 5 minutes et qu'Apache est en train de temporiser la session? Parce que je n'ai pas de délai d'expiration spécifique au proxy, il serait par défaut. Sur la suggestion de délai d'expiration du proxy, pensez-vous que je devrais utiliser la variable ProxyTimeout ou la commande ProxySet? (ProxySet connectiontimeout = 5 timeout = 30)
roacha

2

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 expiredest l'équivalent textuel du APR_TIMEUPcode d'erreur, voir:

srclib / apr / misc / unix / errorcodes.c

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

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

modules / proxy / mod_proxy_http.c

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.