Я использую Nginx с Php-fpm (php 5.5 + opcode) для веб-сайта с очень высоким трафиком, конечную точку статуса php-fpm для мониторинга того, что происходит. После большого пика трафика 200 «активных процессов» все еще работают, несмотря на отсутствие трафика.
Вот моя конфигурация пула php-fpm:
pm.max_children = 1024
pm.start_servers = 32
pm.min_spare_servers = 32
pm.max_spare_servers = 64
pm.max_requests = 500
Вот результат статуса php-fpm для «всегда запущенного» процесса:
{
pid: 24223,
state: "Running",
start time: 1415881336,
start since: 1307629,
requests: 186,
request duration: 1306169216849,
request method: "GET",
request uri: "/index.php?loca.....",
content length: 0,
user: "-",
script: "/home/ebuildy/app/index.php",
last request cpu: 0,
last request memory: 0
},
Этот процесс должен быть "убит", чтобы он находился в состоянии ожидания, не так ли?
Согласно вашей конфигурации pm.min_spare_servers = 32
32 дочерний процесс всегда будет бездействовать. Если вы не хотите, чтобы это переключалось в режим по требованию или в статический режим.
Переключите PHP-FPM на ondemand и установите значения тайм-аута ниже, чем они есть сейчас.