We are happy to announce that Vesta is back under active development as of 25 February 2024. We are working on v1 candidate and expect to engage more with the community over the coming months. We are committed to open source, and we encourage contributors to help us build the future of Vesta.
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
Жесть, потратил на поиски этой инфы почти неделю!!! Конкретный косяк от разрабов Весты