Versão 1.6.1.0 mais rápida!

PrestaShop 1.6.1.0

PrestaShop 1.6.1.0

Quais as partes de PrestaShop são mais rápidos?

Performances single-threaded mais rápidos

Graças a nossas ferramentas internas (a ser lançado publicamente em breve!), Que rapidamente identificou os gargalos de PrestaShop que foram impactando diretamente o tempo de geração de algumas páginas, e, portanto, o SEO ea satisfação do usuário.

No nível do PHP, com o cache desativado e depois de lançar um rastreamento em uma loja real, coletamos todos os dados que precisávamos em poucos minutos:

PHP gargalo

Mesmo no nível do SQL:

SQL gargalo

Graças a estas conclusões, temos reescrito uma grande quantidade de consultas SQL para melhorar a sua eficiência, e melhoramos o núcleo do PHP para remover os estrangulamentos detectados.

Performances mais rápido multi-threaded

Ao lado do enorme trabalho sobre as performances de consulta, temos trabalhado muito nas consultas SQL para garantir que o cache de consultas do MySQL é utilizado de forma eficiente. Nós também fixa alguns problemas desagradáveis ​​no cache PrestaShop. Na verdade, a maior parte do tempo a utilização do cache de PrestaShop foi diminuindo o desempenho. Isto já não é o caso!

Otimizações específicas para ambiente multi-frente / cloud

PrestaShop está usando Smarty para lidar com os modelos. Se você estiver usando vários servidores da frente, o fora da caixa de implementação Smarty força você a centralizar seu cache em um sistema de arquivos compartilhado (NFS).

Para remover esta limitação, nós adicionamos um módulo Smarty costume que faz funcionar perfeitamente com um cache Smarty local (não há mais NFS necessários!). Além disso, a nossa implementação acelerou muito os casos em que o cache tiveram de ser invalidado: em vez de liberar todos os arquivos de uma só vez, cada modelo é liberado de forma assíncrona.

Isso acelerou muito todas as operações de back office!

Melhores performances de back office

Nós removemos o gargalo mais frustrante no PrestaShop back office:

  • As importações mais rápidas : Nós trabalhamos duro para melhorar a velocidade de importação.Quanto mais você importar produtos, mais você vai ver a velocidade acima!
  • Melhor indexação de busca : Nós melhoramos tanto o uso de memória ea velocidade de indexação de pesquisa.
  • Não há mais problema com regras carrinho enormes ou categorias : Compras regras e categorias são carregados de forma assíncrona.

Vamos banco!

A configuração

Para fazer isso de referência, optamos por utilizar um servidor dedicado HG Mini de OVH, que oferece alto desempenho a um preço bastante decente:

  • CPU: Intel (R) Xeon (R) CPU E5-2650 v2 @ 2.60GHz (8 núcleos, 16 threads)
  • Memória: 64 GB
  • Disco: 2x SSD de 600 GB
  • Controladora RAID: LSI MegaRAID SAS 9271-4i CacheVault 1G FastPath

Nós usamos uma Jessie Debian , com os pacotes standard, e uma configuração devidamente otimizado:

  • Apache 2.4.10, com mpm_event e a seguinte configuração:
ServerLimit 16
MaxClients 400
StartServers 3
ThreadLimit 64
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 0
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, com a seguinte configuração:
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
record_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 contenção
innodb_adaptive_hash_index_partitions = 16
innodb_buffer_pool_instances = 16

Nós testamos uma loja real com:

  • 1827 Categorias
  • 10.843 carrinho regras
  • 1904 produtos
  • Atributos do produto 2M
  • 16,5M combinações de atributos

Quando Memcached é usado, ele é configurado localmente, com 128 MB de memória.

Os resultados benchmarks single-threaded e multi-threaded são a média de 5 ” cerco -i -b -t 20S “(20s benchmark), nas páginas representativos que têm um impacto direto sobre a navegação do usuário e SEO:

  • Páginas da categoria
  • Páginas do produto
  • Home pages
  • Carrinho páginas
  • Melhores páginas de vendas
  • Tag páginas de pesquisa
  • Páginas Fabricante
  • Novas páginas de produtos
  • Páginas Baixa de preço
  • Fornecedor páginas
  • Páginas de pesquisa

Os resultados

Performances da frente

Primeiro, o single-threaded performances:

Prestashop 1.6.1.0: performances single-threaded

Parece promissor: até 10x melhoria quando Memcached está ligada!

Vamos dar uma olhada em como os novos 1.6.1.0 escalas:

Prestashop 1.6.1.0: performances multi-threaded com Cache de Consultas e Memcached deficientes

Mesmo sem qualquer cache, 1.6.1.0 escalas muito melhor do que 1.6.0.14, e é até 65% mais rápido com 15 conexões simultâneas .

Prestashop 1.6.1.0: performances multi-threaded com Query Cache habilitado e Memcached deficientes

Se habilitar o cache de consultas, o 1.6.1.0 ainda é até 50% mais rápido com 10 conexões simultâneas.

Logo CC0

Bem, nós definitivamente corrigido o problema de cache PrestaShop. Chegamos quase uma melhoria 10x com 10 conexões simultâneas !

Aqui estão lado a lado a performances, a 10 conexões simultâneas:

Logo CC0

Performances de back office

Aqui estão alguns resultados de back office.

Pesquisa completa reindexação:

Logo CC0

? Do lado da performance, quando Memcached está habilitado, 1.6.0.14 vezes para fora após 900s, e come mais do que 128 MB de memória. Quando Memcached está desativado, 1.6.1.0 é 2,3x mais rápido do que 1.6.0.14, come 1,7x menos memória , e corrige um bug com multi atributos. Nada mal!

Velocidade de importação:

Logo CC0

Embora esses resultados não foram computados na mesma máquina, eu decidi incluí-los, bem como para mostrar o potencial de velocidade que você poderia esperar com a importação em 1.6.1.0 (aquiquase uma velocidade de até 5x ).

Agora vamos medir o tempo para carregar algumas páginas de back office.

Editar Produto:

Logo CC0

No nosso caso, com 1.827 categorias, 1.6.1.0 é 1,7x mais rápido .

Carrinho regras:

Logo CC0

Com 10.843 carrinho regras, mais uma vez 1.6.1.0 é 1,7x mais rápido .

Conclusão

1.6.1.0 é um grande lançamento em termos de performances, com velocidade de até 10x em alguns casos.

Para alcançar esses resultados, temos trabalhado muito estreitamente com a equipe PrestaShop, modificação de cerca de 6600 linhas de código em poucos meses. Nós esperamos que você vai ser feliz com esta versão, e não hesite em reportar quaisquer problemas de desempenho em forja !

Nota final: Considerando que, em 1.6.0.14, recomendamos a não permitir o cache PrestaShop, em 1.6.1.0, recomendamos que você ativá-lo, com um servidor Memcached local (APC deve ser OK também).

Deixe um comentário