опять вопрос по FCGI, есть ли проблемы с функциями?

Opik

Новичок
опять вопрос по FCGI, есть ли проблемы с функциями?

Знаю, что при использовании (u)sleep возникают проблемы (лично у меня сразу начинают плодиться процессы апача и сервер падает)...

Знает ли кто ещё какие проблемы с использованием PHP как FCGI?
 

si

Administrator
уверены что проблема в usleep а не логике работы скрипта ?
 

Opik

Новичок
да, на 99.9%.
Так как только уберешь (u)sleep
бум прекращается.
 

Opik

Новичок
не знаю, но вешает когда пхп установлен как fcgi, как modul всё ок
 

AnToXa

prodigy-одаренный ребенок
я ведь уже объяснял вроде как? еще раз?
 

AnToXa

prodigy-одаренный ребенок
Кхм, что вы имеете в виду?
http://phpclub.ru/talk/showthread.php?s=&threadid=71626&rand=24

Так вопрос несколько иной.
нет, помнится мы обсуждули как раз проблему с usleep(), ссылку лень искать.

если не затруднит
у тебя чайлдов апача - по одному на соединение, а php cfgi процессов - меньше, все повисают в usleep и новые запросы не обрабатываются.
не обрабатываются потому, что php fcgi форкает фиксированоое количество чайлдов, например 10.
а апач - по процессу на соединение.
 

Opik

Новичок
Ну это понятно... usleep я привел как пример, какие еще есть явные особенности (подводные камни(пободные)) с phpfcgi? до этого не пользовался, поэтому на данный момент узнаю все сам методом проб и ошибок. Хотелось бы узнать как можно больше по данному вопросу. Спасибо.
 

AnToXa

prodigy-одаренный ребенок
плавный рестарт надо ручками писать для php fcgi например.
а в апаче он есть.
 

Opik

Новичок
плавный рестарт надо ручками писать для php fcgi например.
Мм, спасибо. а можно поинтересоваться как?

У меня ещё возникает такая проблема, почти как с usleep, начинает плодиться апач, память убегает и сервер вешается.
Придумали временное решение:
#!/bin/bash

PROCESSES=40
INTERVAL=2

while true;
do
PROC_NOW=`ps aux | grep httpd | wc -l`
if [ "$PROC_NOW" -gt "$PROCESSES" ]
then
today=`date +%d.%m.%y`
time=`date +%H:%M:%S`
touch /var/log/antihang.log
echo "[$today - $time] Restarting apache because of $PROC_NOW ru
nning processes" >> /var/log/antihang.log
/usr/local/apache/bin/apachectl restart
sleep 10
fi
sleep $INTERVAL
done
Однако usleep нигде не используется.
 

AnToXa

prodigy-одаренный ребенок
Мм, спасибо. а можно поинтересоваться как?
ручками, как еще, мы писали в виде набора патчей к php fcgi + пара скриптов управляющих типа apachectl.
не уверен, что сможем поделиться.

У меня ещё возникает такая проблема, почти как с usleep, начинает плодиться апач, память убегает и сервер вешается.
ну надо смотреть где висят апачи, например подключиться к одному из них отладчиком(gdb -p <pid>) и посмотреть backtrace(нажимаем ctrl +c, а потом пишем bt).
 

AnToXa

prodigy-одаренный ребенок
хотя бы основы?
по сигналу (или какому-то еще событию, которое может инициировать внешний по отношению к fcgi процесс) рождаем еще один мастер-процесс, который буддет исполнять, возможно, новый бинарник(например обновили php), который наследует собсна рожает еще чайлдов, которые начинают слушать, а старый мастер-процесс сообщает своим чайлдам (тоже сигналом например), что хватит уже слушать - пора отваливаться, они дорабатывают текущие запросы и выходят, а новые чайлды - продолжают работать.
ну или можно рождать не новый мастер процесс, а еще чайлдов, но тогда бинарник перезагрузить довольно малореально.

примерно так.
 

Opik

Новичок
ок, примерно понял, спасибо.
А что касательно плавного обновления?
 

si

Administrator
Opik
выходит и апач у вас умирает, раз вы такие ему костыли поставили. а говорил что с апачам проблем нету. вы точно понимаете что у вас происходит, как и почему ? мне так кажется что нет ...

-~{}~ 14.12.05 23:44:

p.s. если ув ас это чат то краткий ответ будет - так детаь не надо.
 
Сверху