info@digitallsolutions.it       +39 0824 977419

Prestashop 1.6.1.0: ecco le principali novità

La versione di Prestashop 1.6.1.0 porta in sé tanti cambiamenti, primo tra tutti l'interfacciamento al database, ma non solo.

Cerchiamo di capire meglio grazie alla nota ufficiale di rilascio.

 

I - Quali sono le novità di Prestashop 1.6.1.0?

Le caratteristiche già presenti che sono state migliorate sono le seguenti:

Design, Fatturazione, Ricerca e Prestazioni

Il team ha fatto un gran lavoro per migliorare le prestazioni, raggiungendo in alcuni casi anche prestazioni di 10 volte più efficienti.

II - Quali funzioni di Prestashop sono state ottimizzate?

1) Prestazioni migliori in Single-threaded

I colli di bottiglia del Php sono stati intercettati grazie ad alcuni tool (che vi citeremo successivamente) , ed andavano ad incidere sul caricamento delle pagine, la gestione del Seo e sulla soddisfazione generale del cliente. Sotto l'aspetto del php, con la cache disattivata, dopo aver lanciato una ricerca su un negozio vero e proprio, siamo riusciti a raccogliere tutti i dati di cui avevamo bisogno in pochi minuti:

p1

anche a livello sql

p2

Grazie a questi risultati sono state riscritte un gran numero di query sql, per migliorare la loro rapidità di esecuzione, e quindi è stato ottimizzato il core php rimuovendo i colli di bottiglia evidenziati in precedenza.

2) In multi-threaded prestazioni ottimizzate

Insieme al grande lavoro sull'ottimizzazione delle prestazioni delle query, si è lavorato anche sulle query sql per essere certi di fare un uso più efficiente della query cache di MYSQL, e sono stati finalmente sistemati alcuni problemi nella cache di prestashop. Prima di questo aggiornamento l'utilizzo della cache in Prestashop ne peggiorava le prestazione. Questo adesso non succede più.

3) Ottimizzazioni specifiche per multi-front / ambiente cloud

Attualmente Prestashop utilizza Smarty per gestire la cache dei Template. Se si utilizzano diversi front server, Smarty forza la centralizzazione della sua cache in un filesystem condiviso (NFS). E' stato aggiunto per questa evenienza un modulo smarty personalizzato, il quale funziona perfettamente con una cache smarty locale (senza aver bisogno di NFS). Inoltre la nostra implementazione riduce i casi in cui la cache da errori: invece di svuolare tutti i file in una volta, ogni template svuota in maniera asincrona. Questo rende più veloci tutte le operazioni di back office.

4) Migliori prestazioni di back office

Sono state risolte le problematiche più fastidiose nel backoffice:

* Le importazioni

E' stato fatto un grande lavoro per ottimizzare l'importazione dei prodotti. Provate subito questo miglioramento importando molti prodotti.

* Indicizzazione ricerca

Abbiamo migliorato sia l’utilizzo della memoria sia la velocità dell’indicizzazione della ricerca.

*Risolti i problemi con le regole del carrello o delle categorie.

Le regole del carrello e le categoria sono adesso caricate in modo asincrono.

 

III - Passiamo ai Benchmark

1) La configurazione utilizzata

Per fare questo benchmark abbiamo scelto di usare a server mini HG dedicato su OVH, il quale ha offerto ottime prestazioni a un prezzo relativamente accessibile:


• CPU : Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz (8 cores, 16 threads)
• Memory : 64GB
• Disk : 2x SSD 600GB
• RAID Controller : LSI MegaRAID SAS 9271-4i CacheVault 1G FastPath


Abbiamo usato una versione di Debian Jessie, con il packages standard, e una versione adeguatamente ottimizzata:


Apache 2.4.10, conmpm_event con la seguente configurazione:

ServerLimit             16
MaxClients              400
StartServers            3
ThreadLimit             64
ThreadsPerChild         25
MaxRequestWorkers       400
MaxConnectionsPerChild  0
PHP 5.6.7 & APCu + Zend OpCache v7.0.4-dev in PHP-FPM mode con la seguente configurazione:
pm =                    dynamic
pm.max_children       = 400
pm.start_servers      = 75
pm.min_spare_servers  = 50
pm.max_spare_servers  = 100
MariaDB 10.0.0.19, con la seguente configurazione :
performance_schema                    = OFF
innodb_lock_wait_timeout              = 120
default_storage_engine                = InnoDB
max_allowed_packet                    = 16M
key_buffer_size                       = 128M
table_cache                           = 4096
read_buffer_size                      = 2M
read_rnd_buffer_size                  = 1M
thread_cache_size                     = 80
join_buffer_size                      = 2M
sort_buffer_size                      = 2M
max_connections                       = 400
tmp_table_size                        = 32M
max_heap_table_size                   = 32M
table_definition_cache                = 8192
query_cache_size                      = 32M
innodb_buffer_pool_size               = 3G
innodb_log_file_size                  = 128M
innodb_log_files_in_group             = 2
innodb_log_buffer_size                = 8M
innodb_flush_log_at_trx_commit        = 2
innodb_thread_concurrency             = 32
innodb_read_io_threads                = 8
innodb_write_io_threads               = 8
innodb_flush_method                   = O_DIRECT
innodb_file_per_table                 = 1
innodb_io_capacity                    = 2000
innodb_file_format                    = Barracuda
innodb_buffer_pool_dump_at_shutdown   = ON
innodb_buffer_pool_load_at_startup    = ON
innodb_checksum_algorithm             = crc32
innodb_log_compressed_pages           = 0
# SSD
innodb_flush_neighbors                = 0
# Mutex contention
innodb_adaptive_hash_index_partitions = 16
innodb_buffer_pool_instances          = 16


Abbiamo configurato un negozio vero e proprio con:
• 1827 categorie
• 10843 regole carrello
• 1904 prodotti
• 2M attributi di prodotto
• 16.5M combinazioni di attributi


Quando il sistema Memcached è in uso, configurato sul server locale utilizza 128mb di ram.
I risultati dei benchmark dei single-threaded e dei multi-threaded sono in media di 5“ siege – i -b -t 20S” (20s benchmark), e questo ha un impatto diretto sulle pagine sia in termini di navigazione e sia in termini di SEO.


• Pagina di categoria
• Pagina prodotto
• home page
• Pagina carello
• Pagina miglior prezzo
• Pagina di ricerca tag
• Pagina produttori
• Pagina nuovi prodotti
• Pagina gestione prezzi
• Pagina fornitori
• Pagina di ricerca

 

2) I Risultati 

a) Prestazioni Front-Office

Prima, le prestazioni in single-threaded :

Sembra molto promettente: miglioramenti di 10 volte quando il sistema memcached è attivo.

Diamo un’occhiata a questi altri grafici di confronto:

p3

p4

Anche senza alcuna cache, la versione 1.6.1.0 va molto meglio della 1.6.0.14, è più veloce del 65% con 15 connessioni simultanee.

aa

Se abilitiamo la cache delle query, la 1.6.1.0 è ancora più rapida del 50% con 10 connessioni simultanee.

bb

Finalmente è stato definitivamente sistemato il problema della gestione della cache che affliggeva le precedenti versioni di Prestashop. Risultati 10 volte migliori con 10 connessioni simultanee.

Qui ci sono le prestazioni a confronto, a 10 connessioni simultanee:
p5

Se abilitiamo la cache delle query, la 1.6.1.0 è ancora più rapida del 50% con 10 connessioni simultanee.

Si è raggiunto un miglioramento di 10 volte superiore con 10 connessioni simultanee.

Qui un altro grafico con le prestazioni a confronto, a 10 connessioni simultanee:

p6

b) Prestazioni di backoffice


Questi invece i risultati del backoffice.

Reindicizzazione della ricerca completa :
p7

p8

Dal punto di vista delle prestazioni, quando la memcached è abilitata, la 1.6.0.14 va in timeout dopo 900 secondi, e consuma più di 128mb di memoria. Quando memcached è disabilitato, la 1.6.1.0 è 2,3x più rapida della 1.6.0.14, consuma 1,7x di memoria in meno, e raggiunge l'obiettivo anche con i multi attributi. Non male!


Velocità di importazione :

p9

Anche se questi risultati non sono rilevati dalla stessa macchina, ho deciso di includerli lo stesso per mostrarvi la velocità di importazione che potete aspettarvi con la 1.6.1.0 (qui almeno 5 volte più veloce).

Adesso andiamo a misurare il tempo di caricamento di qualche pagina di backoffice.

Ecco il tempo di caricamento delle pagine

Modifica prodotto :

p10

Regole del carrello :

p11

IV) Conclusioni


1.6.1.0 è una major release (le differenze sono sostanziali con la versione precedente) in termini di prestazioni, con miglioramenti in termini di rapidità fino a 10 volte in alcuni casi.
Per ottenere questi risultati abbiamo lavorato a stretto contatto con il team prestashop, modificando circa 6600 righe di codice in pochi mesi. Ci auguriamo che sarete soddisfatti con questa versione, e non esitate a segnalare eventuali problemi di prestazioni su forge.prestashop.com.

Da notare che in 1.6.0.14 è consigliato di non abilitare la cache di prestashop, in 1.6.1.0 si consiglia invece di attivarla, con un server memcached locale. (APC dovrebbe comunque funzionare bene).

Articolo originale in lingua inglese scritto da Jocelyn Fournier fondatore di Softizy  un’azienda specializzata in ottimizzazione Php e MySQL application, dal codice, al database.

 

Lascia i tuoi commenti

Posta commento come visitatore

0
  • Nessun commento trovato

La nostra Società

Ci occupiamo di Realizzazione siti web, Web Marketing, E-commerce, Indicizzazione SEO/SEM dal 2006 e siamo in continuo aggiornamento perché in fondo si sà, nessuno è mai andato lontano nel mondo semplicemente accontentandosi.

Restiamo in contatto

Ricevi per primo le notizie

Siamo presenti su