Torna al blog
Gennaio 13, 2026Guide

Come configurare PHP-FPM per prestazioni ottimali

Guida completa sulla configurazione delle impostazioni del pool PHP-FPM, l'ottimizzazione delle prestazioni e l'integrazione con Nginx.

Come configurare PHP-FPM per prestazioni ottimali

PHP-FPM (FastCGI Process Manager) è un'implementazione alternativa di PHP FastCGI con funzionalità aggiuntive utili per siti Web ad alto traffico. Una corretta configurazione può migliorare significativamente le prestazioni del server e l'utilizzo delle risorse.

Installazione di 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

# Avvia e abilita PHP-FPM
sudo systemctl start php-fpm
sudo systemctl enable php-fpm

Configurazione del pool PHP-FPM

Modifica il file di configurazione del pool per ottimizzare le prestazioni:

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

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

# Gestione dei processi
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 15
pm.max_requests = 500

Ottimizzazione delle prestazioni

Ottimizza PHP-FPM per le risorse del tuo server:

bash
# Calcola il max_children ottimale:
# (RAM totale - Altri servizi) / (Memoria per processo PHP)
# Esempio: (2 GB - 500 MB) / 50 MB = 30 max_children

# Modifica php.ini per prestazioni migliori
sudo nano /etc/php/8.1/fpm/php.ini

# Impostazioni consigliate:
memory_limit = 256M
max_execution_time = 300
upload_max_filesize = 64M
post_max_size = 64M

# Riavvia PHP-FPM
sudo systemctl restart php-fpm

Configurazione di Nginx

Configura Nginx per funzionare con PHP-FPM:

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

# Aggiungi la gestione 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;
}

# Testa e ricarica Nginx
sudo nginx -t
sudo systemctl reload nginx

Monitoraggio di PHP-FPM

bash
# Controlla lo stato di PHP-FPM
sudo systemctl status php-fpm

# Visualizza i processi PHP-FPM
ps aux | grep php-fpm

# Controlla lo stato del pool (se la pagina di stato è abilitata)
curl http://localhost/status

# Visualizza i log
sudo tail -f /var/log/php8.1-fpm.log

Suggerimenti per l'ottimizzazione di PHP-FPM

  • Regola pm.max_children in base alla RAM disponibile
  • Usa pm = dynamic per la maggior parte dei casi d'uso
  • Imposta pm.max_requests per prevenire perdite di memoria
  • Abilita opcache per prestazioni migliori
  • Monitora regolarmente lo stato di PHP-FPM
  • Usa pool separati per diverse applicazioni
  • Mantieni PHP e PHP-FPM aggiornati