ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: worker process 7035 exited on signal 11 (core dumped)



On Wed, Aug 29, 2007 at 11:14:30AM +0400, Igor Sysoev wrote:

> On Wed, Aug 29, 2007 at 10:24:16AM +0400, Alexey Rymonin wrote:
> 
> > Hello Igor,
> > 
> > Wednesday, August 29, 2007, 12:59:46 AM, you wrote:
> > 
> > >> Я могу поставить на них nginx и запустить стрес тест на всех трех
> > >> вресиях ядра... Сэмулировать нагрузку превышающую текущую, на мелких
> > >> файлах, тостых файлах, нот фаундах, форбиденах и больших клиенских
> > >> запросах (чтобы в буфер не влезал)... если эта ошибка ядра, то скорее 
> > >> всего рано или поздно
> > >> она повториться...
> > 
> > > Это было бы интересно при включённом отладочном логе. Его можно вращать
> > > раз в минуту.
> > 
> > Я так и сделаю... поскольку на отладочный лог было бы очень интересно
> > посмотреть...
> > Игорь... у меня на этом же сервере в качестве MTA стоит Exim, который
> > под соляркой также юзает /dev/poll. И он работает без нареканий с тех пор 
> > как сервак
> > запустили... Странно это, поскольку если бы это был баг ядра, он бы
> > тоже должен бы писать хоть что-то....
> 
> Это зависит от того, как обрабатывать. Я, наверное, сделаю там проверку
> на NULL и буду писать в лог о таких случаях.
> 
> > Игорь, у меня к вам еще два вопроса есть:
> > 1) А методы работы с событием(сокетом) синхронизированные?
> > Не может ли появиться событие на сокет пока идет код его удаления из
> > пула, встать в очередь и сразуже по окончанию процедцры вернуться и
> > вызвать падение? Это бы объясняло редкость возникновения баги....
> 
> В nginx'е передача событий в ядро делается пачками, ровно перед получением
> пачки готовых событий. Но при закрытии сокета вся накопивашая пачка
> сразу скидывается в /dev/poll, а потом закрывается сокет.
> 
> После удаления события из ядра оно не должно приходить.
> Если же оно приходит, то это race condition в ядре.
> 
> > 2) Игорь, а что такое DP_ISPOLLED?
> > http://docs.sun.com/app/docs/doc/816-5177/6mbbc4g9q?l=de&a=view
> 
> Способ узнать, зарегистрирован ли дескриптор в /dev/poll.
> Для программ типа nginx'а его использование бессмысленно, так как nginx
> ведёт собственный учёт. Скорее всего, он предназначен для библиотек,
> когда проще сходить в ядро, перед тем, как добавить события, чем вести
> собственный учёт.
> 
> Кстати, в вышеупомянутой проверке на NULL я буду вызывать DP_ISPOLLED,
> чтобы проверить, дейстивтельно ядро считает, что дескрптор ещё присутствует
> в /dev/poll, или же это фантомные события, оставшиеся после удаления.

Патч, который проверяет с DP_ISPOLLED странный дескриптор.
Падать теперь не должно, в логе должны быть alert'ы.
Можно поставить в продакшн плюс на тестирование с отладочным логом для
выяснения, кто не прав.


-- 
Игорь Сысоев
http://sysoev.ru



 




Copyright © Lexa Software, 1996-2009.