Ottimizzare e migliorare la velocità di PrestaShop con il server (2) Php-FPM
Ecco come ottimizzare e migliorare la velocità di PrestaShop con il server partendo da PHP-FPM, una serie di suggerimenti basati sulla nostra esperienza da consulenti su PrestaShop.
PHP-FPM (FastCGI Process Manager) è un process manager per applicazioni PHP che fornisce un modo efficiente e affidabile per eseguire script PHP su un server web. PHP-FPM funziona come un’estensione di PHP che gestisce i processi delle richieste HTTP e gestisce la memoria condivisa tra processi, migliorando le prestazioni e la stabilità del sistema.
Di solito PrestaShop è installato su un server web apache o nginx che usa normalmente php-fpm, come plesk o cpanel ad esempio.
Per ottimizzare e migliorare la velocità di PrestaShop è necessario migliorare la risposta del server, intervenendo su una serie di parametri di PHP-FPM: come ad esempio la dimensione del pool di processi, la gestione della memoria, la gestione del tempo di attesa, abilitare la cache opcode.
Ecco alcuni parametri su cui si può agire per migliorare la velocità di risposta di PHP-FPM:
- pm.max_children: aumentare questo valore può aumentare la capacità di elaborazione del server.
- pm.start_servers: questo valore determina il numero di processi PHP-FPM avviati all’avvio.
- pm.min_spare_servers: questo valore determina il numero minimo di processi PHP-FPM che devono essere mantenuti in attesa di richieste.
- pm.max_spare_servers: questo valore determina il numero massimo di processi PHP-FPM che devono essere mantenuti in attesa di richieste.
- request_slowlog_timeout: questo valore determina il tempo massimo che un processo PHP-FPM può impiegare per elaborare una richiesta prima di essere considerato lento.
- slowlog per abilitare il log di richieste lente.
Ora una breve descrizione su cosa sono i parametri e come impostarli.
Ottimizzare e migliorare la velocità di PrestaShop con “PHP-FPM Children”: cosa sono i processi children
Quando PHP-FPM viene avviato sul server, PHP-FPM è pronto a creare dei processi a lui simili detti figlio. Ogni volta che viene effettuata una richiesta, PHP-FPM la delega a uno dei suoi processi figlio per l’elaborazione. Questi processi figlio sono configurati per mantenere un pool di processi sempre attivi, in modo che le richieste future possano essere gestite rapidamente senza la necessità di creare un nuovo processo ogni volta, il che si tradurrebbe in tempo non usato per eseguire la richiesta.
Ottimizzare e migliorare la velocità di PrestaShop con “pm.max_children”: cos’è e come calcolarlo
pm.max_children è il parametro di PHP-FPM che specifica il numero massimo di processi figlio che possono essere creati per gestire le richieste.
Il valore corretto dipende dalla quantità di memoria disponibile sul server, dal numero di richieste che il server può gestire contemporaneamente e dalla quantità di memoria utilizzata da ogni processo figlio.
pm.max_children = ceil((memory_limit * 0.8) / (memory_per_process + memory_overhead))
- memory_limit è la quantità di memoria disponibile sul server
- memory_per_process è la quantità di memoria utilizzata da ogni processo figlio
- memory_overhead è la quantità di memoria supplementare utilizzata dal sistema operativo e da PHP-FPM per gestire il processo figlio.
Ottimizzare e migliorare la velocità di PrestaShop con “pm.start_servers”: cos’è e come calcolarlo
pm.start_servers è il parametro di PHP-FPM che specifica il numero di processi figli che verranno avviati all’avvio.
Il numero di processi figli iniziali dipende dal carico atteso sul server e dal numero di richieste che si prevede di gestire contemporaneamente. La quantità ottimale di processi figli iniziali può essere calcolata utilizzando la seguente formula:
pm.start_servers = ceil(pm.max_children / pm.process_idle_timeout)
Questa formula prende in considerazione il tempo di inattività massimo di un processo figlio e la quantità massima di processi figli consentiti per calcolare il numero ottimale di processi figli iniziali.
Ottimizzare e migliorare la velocità di PrestaShop con “pm.min_spare_servers & pm.max_spare_servers”: cosa sono e come calcolarli
pm.min_spare_servers è il parametro di configurazione di PHP-FPM che definisce il numero minimo di processi figlio che devono essere mantenuti come processi in attesa (in standby) per gestire le richieste in arrivo.
Questi processi in attesa sono pronti ad eseguire subito una richiesta, senza dover creare prima un nuovo processo, il che potrebbe richiedere tempo e risorse.
Il valore di pm.min_spare_servers dipende dalle dimensioni della tua installazione PHP-FPM e dalla quantità di richieste che riceve il tuo server. Di solito si imposta questo parametro come il doppio del valore di pm.start_servers. Tuttavia, potrebbe essere necessario modificare questo valore in base alle esigenze specifiche del tuo server e alla quantità di richieste che riceve.
pm.max_spare_servers è il parametro di PHP-FPM che specifica il numero massimo di processi di worker che devono rimanere inattivi (cioè in standby) per gestire le richieste future.
Questo parametro viene utilizzato per bilanciare la quantità di risorse utilizzate dal server e la velocità di risposta.
Per calcolare pm.max_spare_servers, puoi tenere presente questi fattori:
- Il carico medio del tuo sito: più elevato è il carico, più processi di worker saranno necessari.
- La memoria disponibile sul server: ogni processo di worker richiede una quantità di memoria, quindi più memoria hai disponibile, più processi puoi avere.
Ottimizzare e migliorare la velocità di PrestaShop con “request_slowlog_timeout”: cos’è e come calcolarlo
request_slowlog_timeout è un parametro di PHP-FPM che definisce il tempo massimo di esecuzione di una richiesta prima che venga considerata come lenta e venga registrata nel file di log slow. Il tempo viene espresso in secondi e il valore predefinito è 0, il che significa che questa funzionalità è disabilitata.
Per calcolare request_slowlog_timeout, è necessario considerare la quantità di tempo che la maggior parte delle richieste impiega per essere eseguite sul proprio sito e quindi impostare un tempo adeguato che consenta di identificare eventuali richieste lente.
Questo parametro è utile per identificare gli script lenti.
Cos’è slowlog
slowlog è un registro che registra le richieste PHP che richiedono molto tempo per essere elaborate. Questo può aiutare a identificare le aree del codice che richiedono ottimizzazioni per migliorare le prestazioni del server. Il parametro “request_slowlog_timeout” definisce il tempo in secondi che una richiesta PHP deve prendere per essere considerata lenta e registrata nel slowlog.
In conclusione
Per ottimizzare e migliorare la velocità di PrestaShop con il server, è possibile intervenire sull’elaborazione di php tramite di parametri di PHP-FPM che se impostati correttamente possono migliorare sensibilmente la velocità della risposta in quanto le richieste in arrivo avrebbero maggiori worker, lavoratori, in grado di soddisfare la richiesta. Se ti servisse consulenza su PrestaShop
Contattaci subito
