Давайте попробуем. А то у меня тут отже трак намечается скоро... не хотелось бы идти по граблям :-)<br><br><div><span class="gmail_quote">On 9/14/06, <b class="gmail_sendername">Igor Sysoev</b> &lt;<a href="mailto:is@rambler-co.ru">
is@rambler-co.ru</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">On Thu, 14 Sep 2006, Sergey Serov wrote:<br><br>&gt; On Saturday 09 September 2006 21:35, Sergey Serov wrote:
<br>&gt;&gt; On Saturday 09 September 2006 19:36, Igor Sysoev wrote:<br>&gt;&gt;&gt; On Sat, 9 Sep 2006, Sergey Serov wrote:<br>&gt;&gt;&gt;&gt; Имею следующую проблему.<br>&gt;&gt;&gt;&gt; Если у nginx выставлен таймаут напр. 10 сек., то иногда если fastcgi
<br>&gt;&gt;&gt;&gt; сервер не успел уложиться в эти 10 сек. он зависает судя по strace в<br>&gt;&gt;&gt;&gt; read() того того файлового дескриптора, который судя по strace<br>&gt;&gt;&gt;&gt; используется для связи с nginx.
<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; Проблема эта мучала меня сильно, главным обзазом тем, что я долго не<br>&gt;&gt;&gt;&gt; мог понять природу зависаний. Но вроде сейчас все изучил, стало легче.<br>&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; По идее такого быть не должно, т.к. fastcgi должен получить broken pipe<br>&gt;&gt;&gt;&gt; и завершить работу.<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; Fastcgi сервер - скрипт Catalyst'a, который использует испытанный
<br>&gt;&gt;&gt;&gt; перловый модуль FCGI::ProcManager который живет без изменений аж 5 лет<br>&gt;&gt;&gt;&gt; уже. Он в свою очередь использует CGI::Fast, который изменяется чаще.<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; Кто тут виноват пока незнаю.
<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; Пока сделал pkill -9 -f perl-fcgi если не curl -sm 15 url.<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; Видимо, правильнее всего написать свой ProcManager.<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; У кого-нибудь были аналогичные проблемы и каковый были способы решения?
<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; Судя по тому, что используется strace - это Линукс.<br>&gt;&gt;<br>&gt;&gt; Во FreeBSD я тоже strace использую, даже использовал когда еще на Линукс не<br>&gt;&gt; мигрировал, чем-то он мне больше нравился чем truss.
<br>&gt;&gt; Но в данном случае это Линукс.<br>&gt;&gt;<br>&gt;&gt;&gt; Какое ядро ?<br>&gt;&gt;<br>&gt;&gt; 2.6.8-2-386<br>&gt;&gt;<br>&gt;&gt;&gt; У меня последнее время на ядрах 2.6.x есть обратные сообщения - когда<br>
&gt;&gt;&gt; сервер закрывает соединение - а nginx об этом не знает.<br>&gt;&gt;<br>&gt;&gt; В strace периодически вижу broken pipe на дескриптор коннекшина с nginx,<br>&gt;&gt; при этом соотв. fastcgi продолжает работу.<br>
&gt;&gt;<br>&gt;&gt; Сперва думал что проблема из-за firewall'а который немного необычно<br>&gt;&gt; настраивается в отличии от ipfw. Но проблема не пропадала после его<br>&gt;&gt; отключения.<br>&gt;&gt;<br>&gt;&gt; Можно с этим что-то поделать?
<br>&gt;<br>&gt; Зависания иногда бывают фатальные.<br>&gt; Зависает один процесс fastcgi в статусе R и съедает весь процессор.<br>&gt; Кильнуть его нельзя, даже -9. PPID у него становится 1. Убить его вообще не<br>&gt; возможно, можно только ребутнуть сервер.
<br>&gt; Несколько часов поиска результатов не принесли.<br>&gt; Задница полная :-(((<br><br>Судя по симптомам, дело не в nginx'е, и не в fastcgi, а в ядре.<br>Я могу сделать небольшой test-case того, что я видел во взаимодействии
<br>nginx/trac, но писать в lkml у меня нет никакого желания. Если есть<br>желающие, то могу сделать.<br><br><br>Игорь Сысоев<br><a href="http://sysoev.ru">http://sysoev.ru</a><br><br></blockquote></div><br><br clear="all">
<br>-- <br>/Scoundrel