Страница 1 из 1

nginx + spawn-fcgi виснут php воркеры

Добавлено: 2009-10-01 9:43:31
sasha181
Например. Есть скрипт 1.php , который прежде чем выдаст ответ, запрашивает инфу у 2.php (через curl)
запущено 50 обработчика php
Если обратится к 1.php в 51 и более паралельных запросов, все обработчики полностью виснут. После этого приходится убивать php при помощи
killall -9 php-cgi
иначе не убивается
пока просто отделили под 2.php несколько обработчиков на другом порту
хотя и сейчас местами наблюдаются подвисания, но обычно отвисает сам
Проблема похоже в php. Может кто-нибудь уже решил её?
Кстати, пока разбирался с этим, замерял производительность связки на тестовой машине (средний домашний двухядерник).
eaccelerator включён
Скрипт с обычным phpinfo(); обрабатывается примерно 430 раз в секунду
Рабочие скрипты не больше 100 в секунду. Причём, касательно этих 100, такое ощущение, что где-то, что-то нужно "подкрутить", т.к. общая загрузка системы во время теста 65-70%
Причём пробовал apache 1.3.x + mod_php и получил примерно такую же производительность php (ниже процентов на 10).
Действительно что-то нужно донастроить, или это нормальные показатели для php?

Re: nginx + spawn-fcgi виснут php воркеры

Добавлено: 2009-10-02 0:33:18
Alex Keda
думаю, нормальные.

Re: nginx + spawn-fcgi виснут php воркеры

Добавлено: 2009-10-02 17:54:41
strmaks
sasha181 писал(а):Проблема похоже в php. Может кто-нибудь уже решил её?
Нет, проблема в логике, из того что написано я понял следующее:
у тебя 50 потомков php
каждый 1.php создает коннект на 2.php и ждет ответа,
соответственно ждут все 50 потомков php занятых выполнением скрипта 1.php,
но если у тебя 50 потомков со скриптом 1.php ждут ответа от 2.php
которые не могут запустится из-за того что все потомки php заняты выполнением скрипта 1.php и ждут ответа от 2.php
то вопрос, в чем проблема?

Нужно сделать так, что бы максимальное количество запускаемых для обработки 1.php было меньше чем максимальное кол-во потомков php что бы 2.php тоже могли выполнятся, что ты и сделал вывесив несколько обработчиков на другой порт или же вообще избавится от этого 2.php.