Para optimizar el rendimiento de PHP-FPM, es importante configurar correctamente los valores relacionados con los recursos de la máquina. A continuación, se explica cómo calcular y ajustar estos valores según la memoria RAM y los núcleos de CPU disponibles.
Cálculo de pm.max_children
pm.max_children
determina el número máximo de procesos hijos que puede generar PHP-FPM. Se calcula dividiendo la memoria RAM disponible entre el consumo promedio de un proceso PHP.
Fórmula:
pm.max_children = RAM disponible / Consumo por proceso
Ejemplo: Si la máquina tiene 8.000 MB de RAM y cada proceso PHP consume 16 MB:
8.000 MB / 16 MB = 500
En este caso, el valor de pm.max_children
sería 500. Sin embargo, es recomendable reservar al menos 1,5 GB de RAM para el sistema operativo y otros servicios.
Configuración:
pm.max_children = 500
Cálculo de pm.start_servers
Este valor define la cantidad de procesos PHP-FPM que se iniciarán al cargar el servicio. Se calcula multiplicando el número de núcleos de la CPU por 4.
Fórmula:
pm.start_servers = Número de cores x 4
Ejemplos:
- Si la máquina tiene 4 núcleos:
4 x 4 = 16
Configuración:pm.start_servers = 16
- Si la máquina tiene 8 núcleos:
8 x 4 = 32
Configuración:pm.start_servers = 32
Cálculo de pm.min_spare_servers
Define el número mínimo de procesos inactivos que PHP-FPM mantendrá disponibles. Se calcula multiplicando los núcleos de CPU por 2.
Fórmula:
pm.min_spare_servers = Número de cores x 2
Ejemplos:
- Si la máquina tiene 4 núcleos:
4 x 2 = 8
Configuración:pm.min_spare_servers = 8
- Si la máquina tiene 8 núcleos:
8 x 2 = 16
Configuración:pm.min_spare_servers = 16
Cálculo de pm.max_spare_servers
Este valor indica el número máximo de procesos inactivos que PHP-FPM mantendrá disponibles. Generalmente, es igual a pm.start_servers
.
Configuración:
pm.max_spare_servers = pm.start_servers
Ejemplo: Si pm.start_servers = 16
:
pm.max_spare_servers = 16
Configuración adicional para Apache
Para ajustar el módulo mpm_prefork
en Apache, edita el archivo de configuración correspondiente y establece los valores según los cálculos realizados.
Archivo a editar:
vim /etc/apache2/mods-enabled/mpm_prefork.conf
Configuración recomendada:
<IfModule mpm_prefork_module>
StartServers 16
MinSpareServers 8
MaxSpareServers 16
MaxRequestWorkers 256
MaxConnectionsPerChild 500
</IfModule>
Reiniciar Apache
Una vez realizados los cambios, reinicia Apache para aplicar la nueva configuración:
sudo systemctl restart apache2
Con estas configuraciones, se optimiza PHP-FPM y el servidor web para manejar mejor las cargas de trabajo según los recursos disponibles.