On Fri, Jan 04, 2008 at 12:31:08AM +0500, Nick S. Knutov wrote:
Hello Igor,
Thursday, January 3, 2008, 11:24:23 PM, you wrote:
Похоже на ошибку в epoll:
2008/01/03 20:38:47 [debug] 25623#0: epoll: fd:11 ev:0001 d:B7550008
...
2008/01/03 20:38:47 [debug] 25623#0: close listening 0.0.0.0:80 #11
...
2008/01/03 20:38:47 [debug] 25623#0: epoll: stale event B7550008
По идее, после закрытия сокета ядро не должно возвращать события.
Прилагаемый патч должен помочь.
На каких ядрах это стало появляться ?
Помогло, спасибо.
Нагрузка подобного характера у меня есть только на одном сервере, там
2.6.18-8.1.8.el5.028stab039.1
На двух предыдущих OpenVZ-шных ядрах было такое же.
Думаю, что проявляется на всех ядрах, включая 2.6.18-53.el5.028stab051.1
Кажется там тоже такое пару раз ловил, но там редко когда отдаются
большие ответы через проксирование к апачу, потому уверенности нету.
Хотелось бы убедиться, что это баг именно системы, а не nginx'а.
К сожалению, предыдущий отладочный лог был не полный, поэтому из него
этог понять было нельзя.
Нужно собрать nginx без патча и запусить с конфигурацией проксирования
одного сайта. После чего запусить ab, и послать nginx'у -HUP.
Если рабочие процессы едят процессор, то повторить то же самое с отладочным
логом.
ps: в отладочном логе есть вот такое.
[warn] 28028#0: 2048 worker_connections are more than open file resource limit:
1024
Почему оно такое? У самой вдс стоит лимит в 16384 открытых файла и
судя по счетчикам там бывает больше открытых файлов, чем 1024. Это
nginx неверно определяет предел или есть какое-то дополнительное
ограничение?
16384 - это на всю VDS. А на процесс внтури VDS - 1024. Можно увеличить
или средствами nginx
worker_rlimit_nofile 8000;
или системы.