если не затруднитеще раз?
нет, помнится мы обсуждули как раз проблему с usleep(), ссылку лень искать.Кхм, что вы имеете в виду?
http://phpclub.ru/talk/showthread.php?s=&threadid=71626&rand=24
Так вопрос несколько иной.
у тебя чайлдов апача - по одному на соединение, а php cfgi процессов - меньше, все повисают в usleep и новые запросы не обрабатываются.если не затруднит
Мм, спасибо. а можно поинтересоваться как?плавный рестарт надо ручками писать для 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
ручками, как еще, мы писали в виде набора патчей к php fcgi + пара скриптов управляющих типа apachectl.Мм, спасибо. а можно поинтересоваться как?
ну надо смотреть где висят апачи, например подключиться к одному из них отладчиком(gdb -p <pid>) и посмотреть backtrace(нажимаем ctrl +c, а потом пишем bt).У меня ещё возникает такая проблема, почти как с usleep, начинает плодиться апач, память убегает и сервер вешается.
уже что, хоть куда то рыть можно толком.
это и ежу понятно 8)ручками.
хотя бы основы?не уверен, что сможем поделиться.
по сигналу (или какому-то еще событию, которое может инициировать внешний по отношению к fcgi процесс) рождаем еще один мастер-процесс, который буддет исполнять, возможно, новый бинарник(например обновили php), который наследует собсна рожает еще чайлдов, которые начинают слушать, а старый мастер-процесс сообщает своим чайлдам (тоже сигналом например), что хватит уже слушать - пора отваливаться, они дорабатывают текущие запросы и выходят, а новые чайлды - продолжают работать.хотя бы основы?
в смысле?А что касательно плавного обновления?
плавный рестарт надо ручками писать для php fcgi например.