Зависания fastcgi серверов
Sergey Serov
mpa at corg.net
Thu Sep 14 10:54:46 MSD 2006
On Saturday 09 September 2006 21:35, Sergey Serov wrote:
> On Saturday 09 September 2006 19:36, Igor Sysoev wrote:
> > On Sat, 9 Sep 2006, Sergey Serov wrote:
> > > Имею следующую проблему.
> > > Если у nginx выставлен таймаут напр. 10 сек., то иногда если fastcgi
> > > сервер не успел уложиться в эти 10 сек. он зависает судя по strace в
> > > read() того того файлового дескриптора, который судя по strace
> > > используется для связи с nginx.
> > >
> > > Проблема эта мучала меня сильно, главным обзазом тем, что я долго не
> > > мог понять природу зависаний. Но вроде сейчас все изучил, стало легче.
> > >
> > > По идее такого быть не должно, т.к. fastcgi должен получить broken pipe
> > > и завершить работу.
> > >
> > > Fastcgi сервер - скрипт Catalyst'a, который использует испытанный
> > > перловый модуль FCGI::ProcManager который живет без изменений аж 5 лет
> > > уже. Он в свою очередь использует CGI::Fast, который изменяется чаще.
> > >
> > > Кто тут виноват пока незнаю.
> > >
> > > Пока сделал pkill -9 -f perl-fcgi если не curl -sm 15 url.
> > >
> > > Видимо, правильнее всего написать свой ProcManager.
> > >
> > > У кого-нибудь были аналогичные проблемы и каковый были способы решения?
> >
> > Судя по тому, что используется strace - это Линукс.
>
> Во FreeBSD я тоже strace использую, даже использовал когда еще на Линукс не
> мигрировал, чем-то он мне больше нравился чем truss.
> Но в данном случае это Линукс.
>
> > Какое ядро ?
>
> 2.6.8-2-386
>
> > У меня последнее время на ядрах 2.6.x есть обратные сообщения - когда
> > сервер закрывает соединение - а nginx об этом не знает.
>
> В strace периодически вижу broken pipe на дескриптор коннекшина с nginx,
> при этом соотв. fastcgi продолжает работу.
>
> Сперва думал что проблема из-за firewall'а который немного необычно
> настраивается в отличии от ipfw. Но проблема не пропадала после его
> отключения.
>
> Можно с этим что-то поделать?
Зависания иногда бывают фатальные.
Зависает один процесс fastcgi в статусе R и съедает весь процессор.
Кильнуть его нельзя, даже -9. PPID у него становится 1. Убить его вообще не
возможно, можно только ребутнуть сервер.
Несколько часов поиска результатов не принесли.
Задница полная :-(((
More information about the nginx-ru
mailing list