Optimiza la configuración max_children de PHP-FPM

Rafael Hernandez • 2020-12-21

Foto por Pang Yuhao on Unsplash (https://unsplash.com) Foto por Pang Yuhao en Unsplash

Si utilizan php-fpm y tienen la configuracion por default puede ser que no esten aprovechando al máximo su servidor.

Uso PHP 7.4 para este tutorial, cambia tu version en el código para que concuerde con la que utilizas

Esto pueden comprobarlo si en el log de php-fpm (en mi instalación se ubica en /var/log/php7.4-fpm.log) encuentran algo como esto:

WARNING: [pool www] server reached pm.max_children setting (5), consider raising it

5 es el default, pero esta pensado para quien tiene un servidor modesto, al incrementarlo tendremos mas procesos para procesar los scripts a cambio de un mayor uso de memoria.

Yo utilizo un cálculo basado en la RAM instalada en el sistema:

pm.max_children = RAM dedicada al servidor web / Tamaño del proceso
Asumiendo:
RAM del servidor: 4GB (Pero solo dedicare 2GB a php)
Tamaño promedio de los procesos: 90MB
pm.max_children = 2000 / 90 = 22

Leer más sobre el cálculo (En inglés)

Cuando tenemos el valor lo actualizamos en la configuración de php-fpm

sudo nano /etc/php/7.4/fpm/pool.d/www.conf

- pm.max_children = 5
+ pm.max_children = 22

Ahora, solo hay que reiniciar el servicio

sudo service php7.4-fpm restart

Tu servidor web ahora utilizará mas memoria, pero estará mejor preparado para lidiar con las solicitudes concurrentes.