Имею следующую проблему.
Если у 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 - это Линукс. Какое ядро ?
У меня последнее время на ядрах 2.6.x есть обратные сообщения - когда
сервер закрывает соединение - а nginx об этом не знает.
Игорь Сысоев
http://sysoev.ru