você está certo, start_servers, min_spare_servers e max_spare_servers não se aplicam ao modo ondemand. As seguintes variáveis são aquelas que se aplicam ao modo ondemand:
- pm.max_children
- pm.process_idle_timeout
- pm.max_requests
Quando você define pm = ondemand, o FPM cria um fork para crianças assim que ele precisa, sempre mantendo o número de filhos menor ou igual a pm.max_children, portanto, essa variável é um limite superior no número de childrens bifurcadas ao mesmo tempo.
As outras duas variáveis permitem que você especifique quando uma criança precisa ser destruída:
-
pm.process_idle_timeout define quanto tempo uma criança aguarda sem trabalho antes de ser destruída. É definido em segundos.
-
pm.max_requests define quantos pedidos (um de cada vez) os filhos processarão antes de serem destruídos. Por exemplo, se você definir essa variável com um valor de 50, os filhos processarão 50 solicitações e se fecharão. Se o processo mestre do FPM ainda precisar de outros filhos, ele irá criar um novo.
Na minha empresa, usamos o modo sob demanda no FPM e usamos pm.max_requests para forçar a reciclagem de fpm para crianças e evitar o uso de memória alta.
Espero que isso ajude,
Saudações.