Таймауты на бакенде
Dmitry E. Oboukhov
unera at uvw.ru
Thu Jul 25 09:21:47 UTC 2013
столкнулся тут с проблемкой
выкатили некое обновление, которое привело к росту нагрузки в
несколько раз. огребли 504.
стали анализировать логи,
nginx отдает 504 по причине того что бакенд дескать не отвечает, время
обработки запроса у него 60 секунд:
128.69.168.54 - - [25/Jul/2013:09:37:00 +0400] "POST /dispatcher/ajax/drivers HTTP/1.1" 504 584 "http://бла-бла/dispatcher" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36" [60.000 : 60.000]
в логе ошибок при этом:
2013/07/25 09:37:00 [error] 4832#0: *425146128 upstream timed out (110: Connection timed out) while connecting to upstream, client: 128.69.168.54, server: бла-бла.ru, request: "POST /dispatcher/ajax/drivers HTTP/1.1", upstream: "http://127.0.0.1:81/dispatcher/ajax/drivers", host: "бла-бла", referrer: "http://бла-бла/dispatcher"
(в конце логов добавлены '[$request_time : $upstream_response_time]')
ну и вроде как бы очевидно, бакенд не справляется надо их количество
увеличить сперва. Откатились пока на старую версию, нагрузки меньше.
все ок.
далее поглядел я в логи апача, а там такая интересная хрень:
...
[Thu Jul 25 07:52:55 2013] [info] [client 127.0.0.1] Request header read timeout
[Thu Jul 25 07:53:09 2013] [info] [client 127.0.0.1] Request header read timeout
[Thu Jul 25 07:53:16 2013] [info] [client 127.0.0.1] Request header read timeout
[Thu Jul 25 07:53:29 2013] [info] [client 127.0.0.1] Request header read timeout
[Thu Jul 25 07:53:43 2013] [info] [client 127.0.0.1] Request header read timeout
[Thu Jul 25 07:53:43 2013] [info] [client 127.0.0.1] Request header read timeout
[Thu Jul 25 07:53:43 2013] [info] [client 127.0.0.1] Request header read timeout
и так на периоде 4 часа
...
то есть получается что в то же самое время (все это на периоде 4 часа
примерно было) когда nginx отдавал 504 через 60 секунд после начала
работы жалуясь на 'upstream timed out' в это же время апач жаловался
что к нему коннектятся но ничего не просят.
nginx'ов - 4 вокрера конфиг для данного роута простейший:
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
more_clear_input_headers 'Transfer-Encoding';
proxy_set_header X-Forwarded-Protocol $scheme;
}
--
. ''`. Dmitry E. Oboukhov
: :’ : email: unera at debian.org jabber://UNera@uvw.ru
`. `~’ GPGKey: 1024D / F8E26537 2006-11-21
`- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537
Подробная информация о списке рассылки nginx-ru