Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Зависание nginx
Hello!
On Sat, Jan 29, 2011 at 01:51:12PM +0300, Andrey Ilyin wrote:
> Добрый день!
>
> Позвольте привлечь ваше внимание к проблеме зависания nginx'a на
> FreeBSD.
>
> Nginx перестает принимать новые запросы, возникают ошибки
> Operation timed out after 10000 milliseconds with 0 bytes received
> Failure when receiving data from the peer
>
> При этом nginx начинает использовать 100% CPU и это значение не
> изменяется.
>
> Хуже всего, что не получается убить процессы nginx'a ни одним из
> kill'ов, приходится перезапускать сервер.
Если процесс не убивается по kill -9 - значит, проблема в ядре.
Народная мудрость.
> Подробнее я уже написал на форуме http://forum.nginx.org/read.php?20,170386 ,
> но боюсь, что в не очень популярной ветке, и скорого ответа я
> могу не дождаться.
Форум - вообще "не очень популярен", если хочется получить ответ -
лучше пользоваться списком рассылки.
Судя по логу - проблема возникает при очередном уходе в
sendfile():
...
2010/12/14 13:05:11 [debug] 2692#0: *427301 http filename:
"/usr/local/www/data/cnode.slideboom.com/out/237643/original/237643.pps"
...
2010/12/14 13:05:22 [debug] 2692#0: *427301 http write filter: l:1 f:0 s:2312984
2010/12/14 13:05:22 [debug] 2692#0: *427301 http write filter limit 0
2010/12/14 13:05:22 [debug] 2692#0: *427301 sendfile() sent only 76528 bytes
(35: Resource temporarily unavailable)
2010/12/14 13:05:22 [debug] 2692#0: *427301 sendfile: -1, @6307048 76528:2312984
2010/12/14 13:05:22 [debug] 2692#0: *427301 http write filter 00000008012D1D80
2010/12/14 13:05:22 [debug] 2692#0: *427301 http copy filter: -2
"/out/237643/original/237643.pps?"
2010/12/14 13:05:22 [debug] 2692#0: *427301 http writer output filter: -2,
"/out/237643/original/237643.pps?"
2010/12/14 13:05:22 [debug] 2692#0: *427301 event timer: 83, old:
1292353582593, new: 1292353582704
2010/12/14 13:05:22 [debug] 2692#0: *427301 http run request:
"/out/237643/original/237643.pps?"
2010/12/14 13:05:22 [debug] 2692#0: *427301 http writer handler:
"/out/237643/original/237643.pps?"
2010/12/14 13:05:22 [debug] 2692#0: *427301 http output filter
"/out/237643/original/237643.pps?"
2010/12/14 13:05:22 [debug] 2692#0: *427301 http copy filter:
"/out/237643/original/237643.pps?"
2010/12/14 13:05:22 [debug] 2692#0: *427301 http postpone filter
"/out/237643/original/237643.pps?" 0000000000000000
2010/12/14 13:05:22 [debug] 2692#0: *427301 write old buf t:0 f:1
0000000000000000, pos 0000000000000000, size: 0 file: 6383576, size: 2236456
2010/12/14 13:05:22 [debug] 2692#0: *427301 http write filter: l:1 f:0 s:2236456
2010/12/14 13:05:22 [debug] 2692#0: *427301 http write filter limit 0
Дальше лог обрывается, видимо всё. Т.е. ушли в sendfile() и из
него не вернулись.
Я бы рекомендовал начать с простого: убедиться, что выключение
sendfile проблему лечит (sendfile_max_chunk тоже может помочь, но
маловероятно).
Дальше воспроизводить и лечить проблему в ядре, в частности:
1) убедиться, что используемая файловая система - не ZFS
(безумству храбрых и всё такое, но на ZFS в 8.1 гарантированны
проблемы при использовании sendfile);
2) убедиться, что рассматриваемый файл нормально читается;
3) внимательно изучить различные системные ресурсы, особенно
заканчивающиеся;
4) перечитать commit-логи
и т.п.
По описанию вообще очень похоже на PR kern/138999 [1], но в 8.1 уже
должно быть исправлено.
[1] http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/138999
Maxim Dounin
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru
|