Vesta 2.0 is coming soon! See our progress update: https://vestacp.com/docs/vesta-2-update
PHP_FCGI_CHILDREN
PHP_FCGI_CHILDREN
Промучался установкой весты из коробки. У меня апачи с fcgid и php 5.3 (нужно для старых движков) и php 7.0 через php_mod для других. Проблема была в том, что копилось море процессов php53-cgi, которые не закрывались, как результат переполнение памяти, сброс в своп и адские тормоза. Что только не делал и внес специальный конфиг для апачи под mod_fcgid.c, вот он кстати, кому-то может быть полезен:
и колдвал с памятью и 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 отключено."
Так что прошу создателя админки, рассмотреть этот вопрос и убрать этот баг из шаблонов по умолчанию. Спасибо.
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>
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>
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 отключено."
Так что прошу создателя админки, рассмотреть этот вопрос и убрать этот баг из шаблонов по умолчанию. Спасибо.
-
- Posts: 1
- Joined: Thu Mar 14, 2019 12:28 pm
- Os: CentOS 6x
- Web: apache + nginx
Re: PHP_FCGI_CHILDREN
Жесть, потратил на поиски этой инфы почти неделю!!! Конкретный косяк от разрабов Весты