Apache Proxy TimeOut

18

Ich versuche zu verstehen, was mit der folgenden Meldung in unserem Apache 2.2-Fehlerprotokoll passiert:

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

Wir führen Apache 2.2 mit mod_proxy aus. Hat dieser Apache eine Zeitüberschreitung für die Anforderung in Bezug auf den 5-Minuten-TimeOut-Wert in der httpd.conf? (Das bedeutet, dass in 5 Minuten keine Antwort vom Remote-Server empfangen wird.) Oder ist dies einfach eine Antwort vom Remote-Server, die besagt, dass die Verbindung nicht verarbeitet werden kann?

Apache hat schnell keine MaxClients mehr, wenn ich diesen Fehler sehe.

Kurzes Beispiel für einen Proxy-Eintrag:

ProxyPass /boom/ga https://super-load1-ga.test.com
ProxyPassReverse /boom/ga https://super-load1-ga.test.com
Roacha
quelle

Antworten:

28

Sie erhöhen das Timeout in der ProxyPass- Direktive:

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

Timeout-Werte werden in Sekunden angegeben .

uı6ʎɹnʎɹ ꞁəıuɐp
quelle
6
Wenn Sie das ProxyPass-Timeout-Argument noch nicht definiert haben, wird Ihr globaler TimeoutWert verwendet. Siehe httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypass httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxytimeout und httpd.apache.org/docs/2.2/mod/core. html # timeout
Synchronisierung
Ich habe auch einen Geeting-Fehler. Das angegebene Timeout ist abgelaufen. Ich habe ProxyRequests. sollte ich es schaffen, um die Zeitüberschreitung zu erhöhen ......
Ashish Karpe
5

Es hört sich so an, https://super-load1-ga.example.comals würde es zu lange dauern, bis Ihr Server antwortet.

In diesem Szenario wartet der Apache-Prozess darauf, wenn er sich nur dort befindet. Dieser Prozess ist im Wesentlichen blockiert, dh kann nichts anderes tun. Wenn Sie nicht schnell genug eine Auszeit nehmen, werden Ihnen die Apache-Prozesse ausgehen und Sie können auf MaxClients zugreifen, was anscheinend Sinn macht.

Sie sollten Protokolle auf der Website super-load1-ga.test.com haben, um zu sehen, wie lange Anfragen dauern. Sie müssen ein Alter haben.

Möglicherweise können Sie das Zeitlimit für die ProxyPass-Verbindung verkürzen

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

Philip Reynolds
quelle
Vielen Dank für die tolle Resonanz, Phil. Sie glauben also, dass dies der Hauptwert für httpd.conf TimeOut von 5 Minuten ist und Apache die Sitzung zeitlich begrenzt? Da ich kein proxyspezifisches Timeout festgelegt habe, ist dies die Standardeinstellung. Denken Sie, dass ich auf dem Proxy-Zeitüberschreitungsvorschlag die ProxyTimeout-Variable oder den ProxySet-Befehl verwenden sollte? (ProxySet connectiontimeout = 5 timeout = 30)
Roacha
2

Um Ihre Frage zu beantworten: Ja, Apache2 httpd im Proxy-Modus protokolliert diese Fehlermeldung, wenn Apache2 httpd das Zeitlimit überschreitet. Wenn der mit dem Apache2-httpd im Proxy-Modus verbundene Server die Ursache wäre, würde eine andere Nachricht angezeigt.

Die Meldung besteht aus mehreren Teilen: The timeout specified has expiredEntspricht dem Text des APR_TIMEUPFehlercodes, siehe:

srclib / apr / misc / unix / errorcodes.c

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

Dann proxy: error reading status line from remote server super-load1-ga.test.comist in

modules / proxy / mod_proxy_http.c

Wenn Sie Ihren Log-Level auf APLOG_DEBUG hochdrehen, sollten Sie eine zusätzliche Meldung sehen: proxy: read timeoutauch.


quelle