Какое должно быть значение PHP_FCGI_CHILDREN при использовании PHP ака FastCGI. "PHP child process management" при использовании PHP ака FastCGI должно быть включено или отключено.
ЛикБез по FastCGI и PHP_FCGI_CHILDREN
Мир всем Вам братья и сестры мои! Смотришь вокруг и просто ё.у диву даёшься как шиза день за днём под корень косит "наши ряды".
- Европа - это сброд гомосеков/лесбиянок и наркоманов;
- Украину заполонили фашисты-гомосеки из гейевропы;
- При использовании РНР ака FastCGI установка PHP_FCGI_CHILDREN выше ноля "решает" проблемы производительности и управляет максимальным числом процессов, а не чилдов.
Что творится, что творится, - ай-яй-яй, ай-яй-я-яй (https://www.youtube.com/watch?v=4-wtJuqyKko), люби друзи, как же нам жить дальше?! :)
http://curl.sim-networks.net/interesting/fastcgi-%D0%B8-php_fcgi_children
Так вот стокнулся с проблемой когда некоторые сайты у клиентов переставали работать. Анализ логов показывал что при первом обращении к виртуалхосту происходит инициализация php-cgi процесса, и вот в этом моменте он крешился и не запускался. В логах ругалось что процесс повторно перезапущен и так по кругу.
Ответ как оказалось был прост. В скрипте инициалцизации fastcgi процесса параметр PHP_FCGI_CHILDREN у меня стоял где 1, а где 2. А как оказалось значение должно быть равно количеству виртуалхостов клиента.
К примеру у клиента 5 сайтов, соответсвенно 5 виртуалхостов и 5 вызовов скрипта. Количество процессо будет 5 и параметр PHP_FCGI_CHILDREN надо задавать не меньше 5.
Вот такие дела. Поправил всё, уже работает неделю, и пока всё отлично, без сбоев.
Хотел было поправить "афтора" сего бреда комментарием, да запретил он "анонам" комментарии вставлять и предлагает всем регатца, чего нам как раз и не хватало, - будем значит отдельным постом бить по безграмотности.
Бить значит будем не пустым звуком, а голыми фактами, которые мы тупо спи.дим скопипастим с оф. сайта "Apache HTTP Server", - итак:
mod_fcgid - Apache HTTP Server Version 2.5 http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html
PHP child process management (PHP_FCGI_CHILDREN) should always be disabled with mod_fcgid, which will only route one request at a time to application processes it has spawned; thus, any child processes created by PHP will not be used effectively. (Additionally, the PHP child processes may not be terminated properly.) By default, and with the environment variable setting PHP_FCGI_CHILDREN=0, PHP child process management is disabled.
Кто настолько туп, глуп и развратен, что знаком с "вражеским" языком "извращённой", погрязшей в коррупции и тотолитаризме, Европы, тот сразу поймёт о чём выше идёт речь, а для особо одарённых ниже представлен перевод на "великий и могучий":
PHP не должен управлять дочерними (детями/чилдами) процессами при использовании с mod_fcgid, имхо порождённый (т.е. родитель) процесс обрабатывает только один запрос в единицу времени; поэтому, все дочерние процессы (чилды), которые создаст PHP не будут эффективно использоваться. (Более того, дочерние процессы PHP не смогут быть прекращены/убиты надлежащим образом, т.е. зависнут навсегда пожирая РАМу). По умолчанию переменная окружения PHP_FCGI_CHILDREN окружающей среды = 0, управление дочерними процессами средствами PHP отключено.
Практика подтвердила описаное выше поведение. Т.е. если при использовании FastCGI переменная окружения PHP_FCGI_CHILDREN выше ноля, например 2, то вместе с порождённым родительским процессом рождаются 2 чилда (наследника/спиногрыза) отгрызшие каждый по 2-4% РАМы, которые никакой практической пользы не несут, часто не убиваются, хотя родитель умирает строго по графику через отведённое ему в FcgidProcessLifeTime время, и зависают навсегда.
Итого
"...стокнулся с проблемой когда некоторые сайты у клиентов переставали работать..." - мнда, что "стокнулся" то "стокнулся", бедные клиенты :) "Ответ как оказалось был прост.", - да ответ просто очевиден, как в анекдоте: "И вы еще спрашиваете: Почему нет мяса? Да потому что свиньи вышли в люди, коровы вышли замуж, козлы женились, бараны защитили диссертацию и правят страной, а куры сдохли со смеху!".
"5 виртуалхостов и 5 вызовов скрипта" - это аж никак не PHP_FCGI_CHILDREN, а FcgidMaxProcessesPerClass (ака виртуалхост) и FcgidMaxProcesses (глобально/суммарно для всех, FcgidMaxProcessesPerClass * число виртуалхостов)!
Нет, я не собираюсь здесь гнобить аффтора того бредового поста имхо "не ошибается только тот, кто ничего не делает", но тчк над "И" следовало бы конечно расставить, и главное признавать свои ошибки.
Братья и сестры мои, Всевышним всех заклинаю! Перестаньте гнать пургу и разсырать разсылать её по всему Интернету, - хоть иногда копипаст сверяйте с манами.
Кто не согласен с выше изложенными фактами, добро пожаловать на дуэль в комментарии (велкам без регистрации :), - похоливарим.

