Volver al blog
Enero 13, 2026Guías

Cómo configurar PHP-FPM para un rendimiento óptimo

Guía completa sobre la configuración de los ajustes del pool de PHP-FPM, el ajuste del rendimiento y la integración con Nginx.

Cómo configurar PHP-FPM para un rendimiento óptimo

PHP-FPM (FastCGI Process Manager) es una implementación alternativa de PHP FastCGI con características adicionales útiles para sitios web de alto tráfico. Una configuración adecuada puede mejorar significativamente el rendimiento de su servidor y la utilización de los recursos.

Instalación de PHP-FPM

bash
# Ubuntu/Debian
sudo apt update
sudo apt install php-fpm php-mysql php-mbstring php-xml php-curl -y

# CentOS/RHEL
sudo yum install php-fpm php-mysql php-mbstring php-xml php-curl -y

# Iniciar y habilitar PHP-FPM
sudo systemctl start php-fpm
sudo systemctl enable php-fpm

Configuración del pool de PHP-FPM

Edite el archivo de configuración del pool para optimizar el rendimiento:

bash
sudo nano /etc/php/8.1/fpm/pool.d/www.conf

# Ajustes clave:
user = www-data
group = www-data
listen = /run/php/php8.1-fpm.sock
listen.owner = www-data
listen.group = www-data

# Gestión de procesos
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 15
pm.max_requests = 500

Ajuste del rendimiento

Optimice PHP-FPM para los recursos de su servidor:

bash
# Calcular el max_children óptimo:
# (RAM total - Otros servicios) / (Memoria por proceso PHP)
# Ejemplo: (2GB - 500MB) / 50MB = 30 max_children

# Editar php.ini para un mejor rendimiento
sudo nano /etc/php/8.1/fpm/php.ini

# Ajustes recomendados:
memory_limit = 256M
max_execution_time = 300
upload_max_filesize = 64M
post_max_size = 64M

# Reiniciar PHP-FPM
sudo systemctl restart php-fpm

Configuración de Nginx

Configure Nginx para que funcione con PHP-FPM:

bash
sudo nano /etc/nginx/sites-available/yourdomain.com

# Añadir la gestión de PHP:
location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

# Probar y recargar Nginx
sudo nginx -t
sudo systemctl reload nginx

Monitorizar PHP-FPM

bash
# Comprobar estado de PHP-FPM
sudo systemctl status php-fpm

# Ver procesos de PHP-FPM
ps aux | grep php-fpm

# Comprobar estado del pool (si la página de estado está habilitada)
curl http://localhost/status

# Ver registros
sudo tail -f /var/log/php8.1-fpm.log

Consejos para la optimización de PHP-FPM

  • Ajuste pm.max_children en función de la RAM disponible
  • Utilice pm = dynamic para la mayoría de los casos de uso
  • Establezca pm.max_requests para evitar fugas de memoria
  • Habilite opcache para un mejor rendimiento
  • Monitorice el estado de PHP-FPM regularmente
  • Utilice pools separados para diferentes aplicaciones
  • Mantenga PHP y PHP-FPM actualizados