Зависания fastcgi серверов

Sergey Serov mpa at corg.net
Sat Sep 9 21:35:25 MSD 2006


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. Но проблема не пропадала после его 
отключения.

Можно с этим что-то поделать?






More information about the nginx-ru mailing list