PHP FCGI + usleep

Opik

Новичок
PHP FCGI + usleep

Почему при данном сочетании первый падает?
 

Opik

Новичок
Даже падает не сам сервер, а зависает сервер. из-за:
плодиться очень много процессов апача (скапливается) кончается память, и сервер падает.
 

Steamroller

Новичок
Даже падает не сам сервер, а зависает сервер. из-за:
плодиться очень много процессов апача (скапливается) кончается память, и сервер падает.
Вообще если пользоваться fcgi - то можно либо Апач в режиме worker.mpm собрать, и тогда без проблем куча тредов одновременных, либо nginx'ом к fcgi обращаться, тогда тоже с этой стороны проблемы не будет.
 

si

Administrator
тогда по пунктам опишите почему вы считаете что uspeel не работает, или работает как-то не так как вым хотелось бы. сдается мне что проблемы у вас совсем другие.
 

Opik

Новичок
si
Был у нас скрипт, в цикле было использовано usleep, стоял mod_php и всё работало, как поставили fcgi сервер начал падать. уходила вся память, процессы скапливались и пока не убрали usleep данный эффект не прекратилось.

Сейчас опять были проблемы. опять нашелся usleep, как убрали - сервер более менее стабилизировался.

-~{}~ 14.11.05 19:42:

Steamroller
режиме worker.mpm собрать
http://httpd.apache.org/docs/2.0/mod/worker.html

сабжа на 1.3 Апач не пашел. А ставить на 2 пхп не рекомендуется ведь?
 

si

Administrator
Opik
проблема в том что у вас на 1 клиента чата - минимум 1 процесс апача, возможно в вашем случае usleep каким-то образом служит катализатором проблем. в общем случае такая схема чара не работоспособна при больших нагрузках.
 

Opik

Новичок
пользователи чата обслуживаются одним процессом. Для чата написан специальный модуль, который весит постоянно в памяти.
(демон + модуль апача для доступа к нему)
 

AnToXa

prodigy-одаренный ребенок
а причем тут fcgi тогда, если у вас демон свой?
 

Opik

Новичок
AnToXa
fcgi для пхп. Вопрос о демоне вообще не связан с темой данного топика.
 

AnToXa

prodigy-одаренный ребенок
возможно у вас маленькое кол-во fcgi процессов и слишком длинный usleep, все процессы повисают в usleep и привет.
 

AnToXa

prodigy-одаренный ребенок
скорее всего экспериментально, т.е. сколько счас апачей висит, и как часто они делают запросы к fcgi, каково среднее время выполенения запроса и каково время usleep.

т.е. чтобы fcgi с usleep успевало отдавать примерно столько запросов сколько ей приходит от апача + еще чуть чуть, чтобы пики выдерживать.

-~{}~ 14.11.05 22:00:

т.е. если пхп висит в usleep то придется делать столько же fcgi сколько и апачей.
 

Opik

Новичок
AnToXa
ну usleep используется крайне редко
В среднем от 3 до 7 процессов апача. бывает увеличивается резко.
и как часто они делают запросы к fcgi
ну допустим 140 человек одновременно что то делают на сайте и обновляют чуть ли не раз в секунду.
 

AnToXa

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

а остальную динамику пустить на другой fcgi, который никогда не ждет.

+ см. в пред ответе дополнение.

т.е. формула что-то вроде
fcgi time * fcgi probability * fcgi processes == mod_php time * mod_php processes

где fcgi probability - вероятность посылки запроса к fcgi, который буддет делать usleep, это примерно (apache requests/usleep requests)
 

AnToXa

prodigy-одаренный ребенок
ну это я на коленке набросал :)
имхо проще все равно действовать экспериментально.

и имхо лучше все же поделить их, сделать много ждуших, редко исполняемых, которые usleep-ятся и не так много тех кто делает нормальный пхп execution.

под линуксом даже scheduler особо не нагрузится от этого, разве что памяти буддет тратиться на процессы и их ресурсы.

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

Opik

Новичок
AnToXa
Спасибо вообщем, очень помог. будем рыть :)

-~{}~ 14.11.05 22:08:

AnToXa
Вопрос немного не в тему, но немного схожий.
Чем может быть вызвано число процессов базы (mysql) 10 процессов.

или создать новую тему?
 
Сверху