¿Cómo liberar la memoria PHP-FPM?

Hay varias discusiones quejándose del uso de alta memoria de PHP-FPM , sin ningún enfoque práctico para superar. A medida que explora el problema con numerosas pruebas, el problema está relacionado con la edad de la edad de PHP-FPM .

Imagine que tenemos pm.max_children = 10, y tenemos un script PHP consumiendo 10M de memoria. Uno espera que necesite 100 MB de MB. Esto es correcto para los primeros 10 procesos. Después de procesar 20 scripts PHP, el uso de memoria del sistema es de 200 MB, lo que significa que la memoria consumida durante los primeros 10 procesos no se han liberado.

Esto aumentará el uso de memoria hasta llegar pm.max_requests cuando PHP-FPM procesos de PHP-FPM se restablecen.

NOTA: Esto fue sólo un ejemplo simplificado de aclaración, y no un comportamiento real. En el mundo real, esto sucede a veces. Normalmente, al final de un script PHP, la memoria consumida por PHP se liberará automáticamente. En PHP-FPM, esta memoria a sometimes (no sé cuándo) no será liberada.

Esto significa que para procesar scripts similares (usando 10MB de memoria) con

 pm.max_children = 10 pm.max_requests = 100 

No necesita 100MB o 1000MB de memoria; Pero algo en el medio. En otras palabras, las huellas de algunos previous processes PHP permanecen en los niños de PHP-FPM .

De acuerdo con esta teoría, el uso de alta memoria de PHP-FPM se superará mediante la reducción pm.max_requests , pero no es la solución definitiva, y tenemos que encontrar un enfoque para liberar los efectos de los procesos anteriores de PHP en el PHP-FPM niños. ¿Alguna idea?

Sin saber exactamente qué tipo de aplicación está ejecutando, es difícil para nosotros decir lo que debe hacer. ¿Pero, han considerado usar el encargado del proceso del ondemand? Matará los procesos después de N tiempo, por lo tanto, mantener su memoria más libre, que la dinámica o estática que está usando probablemente.