(60: Operation timed out) while reading response header from upstream

urri nginx-forum на nginx.us
Пн Авг 8 16:59:59 UTC 2011


День добрый!

Есть сервер, обрабатывающий около 2К
запросов в секунду. Запросы идут на nginx
и передаются на backend. Раньше в роли
бэкенда был php скрипт, запускаемый
через fastcgi. В связи с возрастающей на
сервер нагрузкой был реализован демон
на С, использующий libevent для работы с
сетью.

После смены бэкенда на демона в error.log
переодически сыплются ошибки:
2011/08/08 18:48:20 [error] 30456#0: *17869889685 upstream timed out
(60: Operation timed out) while reading response header from upstream,
client: XX.XX.XX.XX, server: someserver.com, request: "GET
/query/xxx/yyy/ HTTP/1.1", upstream:
"http://127.0.0.1:8888/query/xxx/yyy/", host: "someserver.com",
referrer: "http://somereferrer.com/"

Выставление бОльших таймаутов не
помогло решить проблему.

Возможно проблема где-то в бэкенде, но:

1) Запросы, отправляемые из браузера,
через nginx или напрямую на backend,
обрабатываются за доли секунды.

2) Внутренние очереди сообщений демона
(через которые проходят запросы на
обрабоку между сетевым потоком и
потоком воркером и результаты на
отправку) не превышают пары десятков
ожидающих.

3) Очередь на коннект:
%netstat -Lan
Current listen queue sizes (qlen/incqlen/maxqlen)
Proto Listen         Local Address         
tcp4  320/0/2048     127.0.0.1.8888 --- демон
tcp4  0/0/4096       *.80 --- nginx

4) Активные соединения по демону:
%netstat -tn | grep 8888 | wc -l
   16836
%netstat -tn | grep 8888 | grep -v "TIME_WAIT" | wc -l
    1203

ОС: FreeBSD 7.2
nginx: nginx version: nginx/1.0.0

Подскажите, как диагностировать
проблему?
Спасибо!

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,213520,213520#msg-213520



Подробная информация о списке рассылки nginx-ru