Configurazione PHP-FPM per alte prestazioni
Migliore configurazione PHP-FPM: calcolo facile e semplice. PHP-FPM è un gestore di processi FastCGI un’alternativa a PHP. PHP-FPM è altamente configurabile regolando facilmente le impostazioni del pool per diversi utenti che utilizzano diverse versioni PHP e molto altro. PHP-FPM (Fast Process Manager) è un’implementazione separata di FastCGI per eseguire script PHP. Puoi utilizzare una combinazione di server web NGINX (elaborazione statica) e PHP-FPM per creare un server web più veloce e ad alte prestazioni per i tuoi siti web rispetto allo stack LAMP (modulo NGINX, Apache e mod_php).
È possibile eseguire il comando seguente per verificare la memoria media consumata per i processi PHP-FPM in esecuzione.
Per trovare i valori corretti, dovrai misurare quanta memoria consuma un processo. Tieni presente che questo è possibile solo su un server in cui il sito Web ha un utilizzo della memoria stabile per processo, in altre parole per un ambiente di hosting condiviso con diversi siti Web e codice sviluppato diverso, l’utilizzo della memoria per processo oscillerà seriamente!
La seguente riga (eseguita nella shell) ti fornirà un output prezioso:
ps -ylC php-fpm7.4 --sort:rss
Prendi nota dei valori sotto la colonna RSS. Questa è la memoria utilizzata da ciascuno dei processi PHP-FPM. Abbiamo circa 20 MB di RAM utilizzata in media da ciascun processo figlio PHP-FPM.
Determinare il numero corretto di processi per PHP-FPM
In base ai dati di registrazione in tempo reale, è facile determinare le impostazioni corrette per la configurazione php-fpm sul tuo server. Le impostazioni esatte si basano sulla memoria disponibile sul tuo server cloud, ma tieni presente che devi tenere conto anche degli altri processi, anch’essi consumano quelle risorse (esempi: MariaDB, MySQL, Redis). Non utilizzare mai semplicemente il 100% della memoria disponibile nel server cloud!
Calcolo di pm.max_children
Un esempio: se il nostro server cloud ha 4 GB di RAM ed è in esecuzione anche un servizio di database MariaDB che consuma almeno 1 GB, il nostro obiettivo migliore è ottenere 4 – 1 – 0,5 (marge) GB = 2,5 GB di RAM o 2560 MB.
pm.max_children ci porta a 2560 Mb / 60 Mb = 42 max_children
pm.max_children = 42
pm.start_servers = 15
pm.min_spare_servers = 15
pm.max_spare_servers = 25
pm.max_requests = 500
Configurazione Php-fpm
Consideriamo un esempio di configurazione per un server single-core ( vCPU ) con 4 GB di RAM.
Puoi allocare circa 2.5 GB per php-fpm, lasciando il resto per il tuo database e nginx.
Aggiungi quanto segue al file di configurazione /etc/php-fpm/www.conf :
pm.max_children =
42 è il numero massimo di processi figlipm.start_servers =
15 è il numero di processi figli creati all’avviopm.min_spare_servers =
15 è il numero minimo di processi server inattivipm.max_spare_servers =
25 è il numero massimo di processi server inattivipm.max_requests = 500
è il numero di richieste di processo figlio, dopo le quali il processo verrà riavviato
Dopo aver eseguito il tuo sito web, vedrai ad occhio nudo che nginx + php-fpm elaborerà le tue richieste e restituirà le pagine web molto più velocemente di apache2 + mod_php.