Page 1 of 1

PHP_FCGI_CHILDREN

Posted: Fri Jul 07, 2017 4:36 pm
by vman
Промучался установкой весты из коробки. У меня апачи с fcgid и php 5.3 (нужно для старых движков) и php 7.0 через php_mod для других. Проблема была в том, что копилось море процессов php53-cgi, которые не закрывались, как результат переполнение памяти, сброс в своп и адские тормоза. Что только не делал и внес специальный конфиг для апачи под mod_fcgid.c, вот он кстати, кому-то может быть полезен:
SpoilerShow
<IfModule mod_fcgid.c>
AddHandler fcgid-script .fcgi
FcgidConnectTimeout 3
FcgidMaxRequestLen 10737418
PHP_Fix_Pathinfo_Enable 1
FcgidMaxProcesses 1000
FcgidMaxRequestsPerProcess 0
FcgidMaxProcessesPerClass 100
FcgidMinProcessesPerClass 3
FcgidIOTimeout 40
FcgidProcessLifeTime 360
FcgidIdleTimeout 100
FcgidIdleScanInterval 47
FcgidBusyTimeout 100
FcgidBusyScanInterval 50
FcgidZombieScanInterval 3
FcgidErrorScanInterval 3
FcgidSpawnScore 1
FcgidTerminationScore 2
FcgidTimeScore 1
FcgidSpawnScoreUpLimit 10
</IfModule>
и колдвал с памятью и nginx, но это все это не решало проблему. Но после долгих ковыряний обнаружил в шаблонах в файле cgi-binf/cgi-starter в корне сайта, вот такие странные записи:

export PHP_FCGI_MAX_REQUESTS=1000
export PHP_FCGI_CHILDREN=20

После того как их закомментил, все стало работать как часы, потом сделал тоже самое в шаблоне phpfcgid.sh ,чтобы каждый раз не делать. Поизучав, что это за звери, обнаружил, что если с PHP_FCGI_MAX_REQUESTS все ок, но при настройке общей он вроде как не нужен, то PHP_FCGI_CHILDREN просто вреден, вот что про это пишется в документации см. 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 отключено."

Так что прошу создателя админки, рассмотреть этот вопрос и убрать этот баг из шаблонов по умолчанию. Спасибо.

Re: PHP_FCGI_CHILDREN

Posted: Thu Mar 14, 2019 12:29 pm
by donsergios
Жесть, потратил на поиски этой инфы почти неделю!!! Конкретный косяк от разрабов Весты