Hosting & Cloud

Come ottimizzare il consumo di RAM di PHP-FPM in ambienti Linux

1 minuti lettura
Come ottimizzare il consumo di ram NEWS
Come ottimizzare il consumo di ram NEWS

Se hai acquistato un template LAMP o configurato uno stack, LAMP/LEMP, stai probabilmente usando PHP-FPM (un acronimo di FastCGI Process Manager): un’ottima alternativa più perfomante rispetto all’utilizzo di PHP come modulo Apache o PHP FastCGI.

Noi, ormai da alcuni anni, utilizziamo PHP-FPM su tutti i nuovi piani hosting condivisi e template LAMP, con ottimi risultati rispetto a mod_php, un modulo di Apache.

Come ottimizzare il consumo di RAM di PHP-FPM in ambienti Linux? Per ottenere performance ottimali e risparmiare fino al 50% di RAM, una delle possibili tecniche attuabili è la modifica di alcuni aspetti nella configurazione nel pool di PHP-FPM.

Il pool di default è www ed è situato in /etc/php-fpm.d/www.conf (in CentOS/RHEL/Fedora) o /etc/php/7.4/fpm/pool.d/www.conf (in Ubuntu/Debian/Mint). Il percorso può variare in base alla versione di php utilizzata.

$ nano /etc/php-fpm.d/www.conf [On CentOS/RHEL/Fedora] $ nano 
/etc/php/7.4/fpm/pool.d/www.conf [On Ubuntu/Debian/Mint]

Indice dei contenuti:

Come procedere?

Basterà cercare le seguenti direttive all’interno del file di configurazione e impostare un valore appropriato secondo il tuo use-case. In caso di direttive già commentate, sarà sufficiente togliere il commento.

pm = ondemand 
pm.max_children = 80 
pm.process_idle_timeout = 10s 
pm.max_requests = 200

Cosa indicano le direttive?

La direttiva pm determina come il process manager controlla il numero di processi child. Il metodo di default è dynamic: significa che il numero di children (processi child) è impostato dinamicamente e dipendentemente da altre direttive nella configurazione, come pm.max_children, la direttiva che definisce il massimo numero di children che possono essere utilizzati nello stesso momento.

Per un consumo di memoria ottimale consigliamo il process manager ondemand: nessun child viene creato all’avvio del servizio ma vengono generati solo se necessario. I processi child sono creati solo nel caso di nuove richieste, rispettando le direttive pm.max_children e pm.process_idle_timeout. Quest’ultima definisce il numero di secondi dopo cui un processo inattivo viene terminato.

Il parametro pm.max_request definisce il numero di richieste che ogni processo child dovrebbe eseguire prima di essere ricreato. Questo parametro può essere utilizzato come workaround per memory leaks causati da librerie di terze parti. 

Foto Manager Elena Parise
97 articoli

Note sull'autore
Marketing Assistant - Appassionata di scrittura e social media, crede fortemente nell’influenza positiva del digitale e della comunicazione nella vita quotidiana. In Shellrent supporta le imprese nell’identificazione delle soluzioni più adatte in materia di hosting, cloud e infrastrutture IT.
Articoli
Articoli correlati
Hosting & Cloud

Come creare un sito portfolio in quattro step

3 minuti lettura
Per un designer, progettista, architetto o freelancer, un sito portfolio è un’ottima vetrina online per mostrare il proprio talento, la propria esperienza…
Hosting & Cloud

I migliori plugin WordPress per web agency

2 minuti lettura
La scelta di adeguati strumenti per semplificare e automatizzare le attività di gestione dei progetti web può fare la differenza. In questo…
Hosting & Cloud

Cos'è e come risolvere l'errore 503?

2 minuti lettura
Ti è mai capitato di navigare online e imbatterti nel messaggio di errore “503 Service Unavailable“? Questo avviso è piuttosto comune e…