Czas serwera proxy Apache

19

Próbuję zrozumieć, co dzieje się z następującym komunikatem w naszym dzienniku błędów 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

Używamy Apache 2.2 z mod_proxy. Czy ten serwer Apache przeterminował żądanie związane z jego 5-minutową wartością TimeOut w httpd.conf? (Oznacza to, że nie odbiera odpowiedzi ze zdalnego serwera w ciągu 5 minut.) Czy to po prostu odpowiedź ze zdalnego serwera mówi, że nie może obsłużyć połączenia?

W czasie, gdy widzę ten błąd, Apache szybko kończy się z MaxClients.

Szybki przykład wpisu proxy:

ProxyPass /boom/ga https://super-load1-ga.test.com
ProxyPassReverse /boom/ga https://super-load1-ga.test.com
płoć
źródło

Odpowiedzi:

28

Zwiększasz limit czasu w dyrektywie ProxyPass :

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

Wartości limitu czasu podano w sekundach .

uı6ʎɹnɯ ꞁəıuɐp
źródło
6
Jeśli nie definiujesz jeszcze argumentu limitu czasu ProxyPass, Timeoutzostanie użyta wartość globalna . Zobacz httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypass httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxytimeout i httpd.apache.org/docs/2.2/mod/core. html # timeout
synchronizacja
Mam również błąd geetingu Określony limit czasu wygasł ... Mam wyłączoną funkcję ProxyRequests, więc czy to jest związane? powinienem zwiększyć czas oczekiwania ......
Ashish Karpe
5

Wygląda na https://super-load1-ga.example.comto, że odpowiedź na serwer trwa zbyt długo.

W tym scenariuszu, jeśli po prostu tam będzie, proces Apache będzie na niego czekać. Ten proces jest zasadniczo zablokowany, tzn. Nie można nic więcej zrobić. Jeśli nie upłynie wystarczająco dużo czasu, skończy Ci się proces Apache i uderzysz w MaxClients, co wydaje się mieć sens.

Powinieneś mieć logi na stronie super-load1-ga.test.com, aby zobaczyć, jak długo trwają żądania, muszą one się starzeć.

Możesz potencjalnie skrócić limit czasu połączenia ProxyPass

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

Philip Reynolds
źródło
Dzięki za wspaniałą odpowiedź Phil. Więc myślisz, że osiąga to główną wartość czasu httpd.conf wynoszącą 5 minut, a Apache kończy sesję? Ponieważ nie mam ustawionego limitu czasu określonego dla proxy, byłoby to ustawienie domyślne. Czy według sugestii przekroczenia limitu czasu proxy powinienem użyć zmiennej ProxyTimeout lub polecenia ProxySet? (ProxySet connectiontimeout = 5 limit czasu = 30)
roacha
2

Aby odpowiedzieć na twoje pytanie, tak, Apache2 httpd w trybie proxy rejestruje ten komunikat o błędzie, gdy limit czasu Apache2 httpd zostanie przekroczony. Jeśli serwer podłączony do httpd Apache2 w trybie proxy był przyczyną, pojawiłby się inny komunikat.

Wiadomość składa się z wielu części: The timeout specified has expiredjest tekstowym odpowiednikiem APR_TIMEUPkodu błędu, patrz:

srclib / apr / misc / unix / errorcodes.c

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

Potem proxy: error reading status line from remote server super-load1-ga.test.comjest w

moduły / proxy / mod_proxy_http.c

Jeśli zwiększysz swój poziom dziennika do APLOG_DEBUG, powinieneś zobaczyć dodatkowy komunikat: proxy: read timeoutteż.


źródło