В конфигурации fastcgi есть 4 поля: max-procs, max-load-per-proc, PHP_FCGI_CHILDREN, PHP_FCGI_MAX_REQUESTS:
fastcgi.server = ( ".php" =>
(( "socket" => "/tmp/php-fastcgi.socket",
"bin-path" => "/usr/local/bin/php",
"max-procs" => "2",
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "3",
"PHP_FCGI_MAX_REQUESTS" => "10000" )
))
)
Итак, будет 1 fastcgi бэкэнд с 2 процессами. Эти процессы принимают нагрузку.
Я не понимаю следующее:
Надеюсь, что это проливает некоторый свет на ситуацию
Небольшой контекст для остальной части этого ответа:
«Основной» процесс — это процесс, который порождается. Это может поделиться всеми своими ресурсами [как память] со своими детьми. Но, тем не менее, не обрабатывает запросы php, думайте об этом как о контейнере для реальных обработчиков запросов.
«Дочерний» процесс — это то, что фактически обрабатывает запросы php. Это, в свою очередь, также является очень важным фактором, определяющим нагрузку на «основной» процесс.
Общая стратегия здесь должна заключаться в том, чтобы минимизировать количество «основных» процессов и максимизировать количество «дочерних» процессов при сохранении стабильности, поскольку дочерние процессы будут иметь общий opcache, memoryspace и системные ресурсы со своими братьями и сестрами.
PHP_FCGI_CHILDREN
= Количество дочерних процессов, которые может породить «главный» процесс.PHP_FCGI_CHILDREN
PHP_FCGI_CHILDREN
и по умолчанию 1, и если установлено другое значение, всегда добавляет 1 к указанному вами числу [так что если вы укажете это как 1, он добавляет 1, так что он станет 2]PHP_FCGI_CHILDREN=0
каждый основной процесс порождает только 1 дочерний процессДругих решений пока нет …