ottimizzare e migliorare la velocità di PrestaShop

Per ottimizzare e migliorare la velocità di PrestaShop, ti fornirò alcuni consigli per la configurazione di PrestaShop e del server, per aumentare la prestazioni del tuo sito PrestaShop. E se non hai nessuna possibilità di ottimizzare il tuo PrestaShop in questo modo, possiamo offrirti consulenza su PrestaShop

PrestaShop sta incontrando problemi di velocità lato frontend a causa di molteplici fattori, come moduli non ottimizzati, utilizzo di mysql, motore grafico Smarty, tema grafico, immagini pesanti e altro. Anche la configurazione dell’hosting o del database mysql può influire sulla velocità.

Database Mysql

Per ottimizzare e migliorare la velocità di PrestaShop, è necessario regolare alcuni parametri del database. Questi parametri possono essere impostati direttamente tramite phpMyAdmin con l’utente root o direttamente nel file di configurazione di MySQL, che di solito si trova in /etc/mysql/my.cnf. Le variabili da inserire sono sotto la sezione [mysqld].

Ecco la lista di variabili per ottimizzare la velocità di PrestaShop:

  • innodb_buffer_pool_size
  • innodb_buffer_pool_instances
  • innodb_flush_log_at_trx_commit
  • innodb_thread_concurrency
  • innodb_file_per_table
  • innodb_flush_method

Queste variabili saranno spiegate in dettaglio in seguito.

Migliorare la velocità di PrestaShop con “innodb_buffer_pool_size”: cos’è e come calcolare innodb_buffer_pool_size di innodb

innodb_buffer_pool_size è un parametro di configurazione di MySQL che specifica la dimensione della cache di memoria utilizzata da InnoDB per memorizzare i dati e le informazioni sugli indici delle tabelle. Questa cache è molto importante per le prestazioni di InnoDB, poiché permette di ridurre il numero di operazioni di I/O sul disco e migliorare la velocità delle query. Questo parametro può ottimizzare e migliorare la velocità di PrestaShop.

Il valore di innodb_buffer_pool_size dovrebbe essere impostato in modo che corrisponda alla quantità di memoria disponibile sul server. In generale, si consiglia di impostare il valore di innodb_buffer_pool_size tra il 70% e l’80% della memoria totale disponibile, anche se la quantità esatta dipende dalle esigenze specifiche del tuo sistema.

Per modificare il valore di innodb_buffer_pool_size, dovrai modificare il file di configurazione di MySQL e riavviare il server MySQL.

Ad esempio, per calcolare il 70% di 3GB in byte, puoi utilizzare la seguente formula:

(70/100) * 3GB = 2.1GB

1GB = 1,073,741,824 byte

Quindi, 2.1GB = 2.1 * 1,073,741,824 byte = 2,252,158,944 byte

Quindi, il 70% di 3GB in byte è 2,252,158,944 byte.

Migliorare la velocità di PrestaShop con “innodb_buffer_pool_instances”: cos’è e come calcolarlo

innodb_buffer_pool_instances è un parametro di configurazione di MySQL che specifica il numero di istanze della cache del buffer pool di InnoDB.

Il buffer pool di InnoDB è un’area di memoria condivisa che viene utilizzata per memorizzare i dati e le informazioni sulle indicizzazioni delle tabelle InnoDB. Questo parametro può ottimizzare e migliorare la velocità di PrestaShop

Il valore di innodb_buffer_pool_instances può essere impostato per migliorare l’utilizzo della memoria e la gestione della cache in sistemi con molte istanze di InnoDB. Più istanze della cache del buffer pool significa che ci sono più partizioni della cache, il che può aumentare l’efficienza e la velocità delle query. Tuttavia, aumentare troppo il numero di istanze può anche aumentare l’utilizzo della memoria e rendere più complesso la gestione della cache.

Per impostare il valore di innodb_buffer_pool_instances, dovrai modificare il file di configurazione di MySQL e riavviare il server. Il valore predefinito per innodb_buffer_pool_instances è 1.

Il calcolo esatto del valore ottimale per innodb_buffer_pool_instances dipende dalle tue esigenze specifiche e dalle risorse del sistema. Tuttavia, ci sono alcune linee guida che puoi seguire per calcolare il valore corretto:

Calcola la quantità di memoria disponibile: Determina la quantità di memoria disponibile sul tuo sistema.

  • Calcola la dimensione della cache: Calcola la dimensione della cache che vuoi utilizzare per la cache del buffer pool di InnoDB. La dimensione della cache dovrebbe essere impostata in modo che corrisponda alla quantità di memoria disponibile sul sistema.

  • Calcola il numero di istanze: Dividi la dimensione della cache per la dimensione di ogni istanza della cache. Questa formula ti darà il numero di istanze di cui hai bisogno:

innodb_buffer_pool_instances = ceil(innodb_buffer_pool_size / (64MB * innodb_buffer_pool_instances))

Per impostare il valore di innodb_buffer_pool_instances, dovrai modificare il file di configurazione di MySQL e riavviare il server. Tieni presente che il valore ottimale può variare a seconda delle esigenze specifiche del tuo sistema e che potrebbe essere necessario sperimentare con diversi valori per trovare quello che funziona meglio per te.

Migliorare la velocità di PrestaShop con “innodb_flush_log_at_trx_commit”: cos’è e come calcolarlo

innodb_flush_log_at_trx_commit è un parametro di configurazione di MySQL che controlla la frequenza con cui vengono effettuati i flush dei log delle transazioni durante le operazioni di commit. Anche questo parametro può ottimizzare e migliorare la velocità di PrestaShop

Questo parametro ha tre valori possibili:

  • 0: i flush dei log delle transazioni vengono effettuati solo una volta al secondo. Questo valore è il più veloce ma comporta una minore integrità dei dati in caso di crash del sistema.
  • 1 (valore predefinito): i log delle transazioni vengono flushati ad ogni operazione di commit. Questo garantisce una maggiore integrità dei dati, ma può rallentare le prestazioni del sistema.
  • 2: i log delle transazioni vengono flushati su disco anche se non viene effettuato il commit. Questo garantisce una maggiore integrità dei dati e una maggiore sicurezza in caso di crash del sistema, ma può comportare una significativa riduzione delle prestazioni.

Il valore di innodb_flush_log_at_trx_commit deve essere impostato in base alle esigenze specifiche del tuo sistema. Ad esempio, se la sicurezza dei dati è una priorità, potresti scegliere di impostare il valore su 2, anche se questo rallenta le prestazioni del sistema. In generale, ti consiglio di fare riferimento alla documentazione ufficiale di MySQL per maggiori informazioni sulle opzioni disponibili e sulle loro conseguenze sulle prestazioni del sistema.

Migliorare la velocità di PrestaShop con “innodb_thread_concurrency”: cos’è e come calcolare calcolarlo

Il calcolo preciso di innodb_thread_concurrency dipende da molte variabili, come la configurazione hardware del sistema, la quantità di memoria disponibile, la quantità di traffico che il sistema deve gestire, e il carico di lavoro delle applicazioni che utilizzano il database. Anche questo parametro può ottimizzare e migliorare la velocità PrestaShop

In generale, per calcolare il valore ottimale per innodb_thread_concurrency, puoi seguire questi passaggi:

Monitorare il sistema durante le ore di punta per raccogliere dati sulle prestazioni del database, inclusi i tempi di risposta delle query, la percentuale di utilizzo del CPU e la quantità di memoria disponibile.

Aumentare gradualmente il valore di innodb_thread_concurrency fino a quando non si verificano problemi di prestazioni, come tempi di risposta delle query più lunghi o una maggiore percentuale di utilizzo del CPU.

Ripetere i passaggi 1 e 2 per diverse configurazioni di carico di lavoro e di traffico per ottenere una comprensione più precisa del valore ottimale per il tuo sistema.

Tieni presente che il valore ottimale per innodb_thread_concurrency può variare anche in base alle versioni di MySQL e InnoDB che si stanno utilizzando. Ti consiglio di fare riferimento alla documentazione ufficiale di MySQL per ulteriori informazioni sulle raccomandazioni specifiche per la tua configurazione.

Migliorare la velocità di PrestaShop con “innodb_file_per_table”: cos’è e come si calcolarlo

innodb_file_per_table è un’opzione di configurazione di MySQL che specifica se ogni tabella InnoDB deve essere archiviata in un file separato o se tutte le tabelle InnoDB devono essere archiviate in un unico file di sistema di database. Questo parametro può ottimizzare e migliorare la velocità di PrestaShop

Se questa opzione è impostata su “ON”, ogni tabella InnoDB avrà il proprio file, che è utile per gestire meglio lo spazio sul disco e per migliorare le prestazioni per alcune operazioni come il backup, il ripristino o la compressione dei dati.

Migliorare la velocità di PrestaShop con “innodb_flush_method”: cos’è 

innodb_flush_method è un’opzione di configurazione di MySQL che specifica il metodo utilizzato per scrivere i dati dalla memoria a disco. Questa opzione è disponibile per il storage engine InnoDB.

I valori possibili per innodb_flush_method sono:

  • O_DSYNC: utilizza la chiamata al sistema O_DSYNC per garantire che i dati vengano scritti sul disco in modo sincrono. Questo metodo garantisce la consistenza dei dati, ma può rallentare le prestazioni.
  • O_DIRECT: utilizza la chiamata al sistema O_DIRECT per evitare di passare attraverso il buffer del sistema operativo durante la scrittura su disco. Questo metodo può migliorare le prestazioni, ma potrebbe non essere supportato da tutte le piattaforme.
  • O_ASYNC: utilizza la chiamata al sistema O_ASYNC per scrivere i dati su disco in modo asincrono. Questo metodo può migliorare le prestazioni, ma potrebbe non essere supportato da tutte le piattaforme e non garantisce la consistenza dei dati.

Il valore predefinito per innodb_flush_method è O_DSYNC e funziona bene per la maggior parte delle configurazioni. Tieni presente che potrebbe essere necessario sperimentare con diversi valori per trovare quello che funziona meglio per la tua configurazione specifica.

In conclusione

I suggerimenti esposti qui sopra possono ottimizzare e migliorare la velocità di PrestaShop sensibilmente, ma è necessario avere la possibilità di accedere alla configurazione del database. Se ha un hosting condiviso, contatta il tuo provider. Se hai un server privato devi poter accedere con la shell alla root.

Se non hai nessuna possibilità di ottimizzare il tuo PrestaShop in questo modo, possiamo offrirti consulenza su PrestaShop

Contattaci per una consulenza e troveremo la soluzione migliore.