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 figli
  • pm.start_servers = 15 è il numero di processi figli creati all’avvio
  • pm.min_spare_servers = 15 è il numero minimo di processi server inattivi
  • pm.max_spare_servers = 25 è il numero massimo di processi server inattivi
  • pm.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.

Autore

Classe Novanta3, Fondatore di TrgtKLS. Appassionato in Sec IT & Tech. Expert per l'amministrazione web server e supporto in Back-&, ottimizzazione e manutenzione di esso. • Metà Free e Metà Freelancer • [email protected]

Articoli correlati

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *