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.as
p
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
źródło
Timeout
zostanie 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 # timeoutWygląda na
https://super-load1-ga.example.com
to, ż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
źródło
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 expired
jest tekstowym odpowiednikiemAPR_TIMEUP
kodu błędu, patrz:srclib / apr / misc / unix / errorcodes.c
Potem
proxy: error reading status line from remote server super-load1-ga.test.com
jest wmoduły / proxy / mod_proxy_http.c
Jeśli zwiększysz swój poziom dziennika do APLOG_DEBUG, powinieneś zobaczyć dodatkowy komunikat:
proxy: read timeout
też.źródło