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
90 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

Il VPS provider col pallino della sicurezza

4 minuti lettura
Nell’ambito delle soluzioni di hosting, il virtual private server (VPS) costituisce un ottimo compromesso tra convenienza, adattabilità e controllo dell’infrastruttura. Si colloca…
Hosting & Cloud

Server hosted vs on-premise: quale soluzione scegliere

3 minuti lettura
In un contesto in cui le infrastrutture IT definiscono il framework di tutte le operazioni e le attività aziendali, aver un server…
Hosting & Cloud

Plesk o cPanel: qual è il miglior pannello di controllo?

3 minuti lettura
Nell’ambito dei server dedicati, scegliere il pannello di controllo più adatto alle proprie necessità operative ha un peso non indifferente. La piattaforma…