"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como o ajuste do MySQL melhora o desempenho do Laravel

Como o ajuste do MySQL melhora o desempenho do Laravel

Publicado em 30/07/2024
Navegar:702

O ajuste da configuração do MySQL é um componente importante do gerenciamento de banco de dados implementado por profissionais e administradores de banco de dados. Tem como objetivo configurar o banco de dados para se adequar ao seu hardware e carga de trabalho. Mas, além da esfera de gerenciamento de banco de dados, a utilidade do ajuste da configuração do MySQL é amplamente ignorada.

Supomos que o ajuste do MySQL pode afetar significativamente o desempenho de aplicativos da web. Se pudermos mostrar o valor do ajuste do MySQL, acreditamos que as empresas e organizações podem estar interessadas em incorporar esta prática em maior escala.

Como melhorar o desempenho do aplicativo Laravel

Melhorar o desempenho do aplicativo com ajuste é melhor alcançado com uma abordagem abrangente que aborda as seguintes áreas:

  • Recursos do servidor – CPU, memória, armazenamento
  • Configurações de software – Linux, Nginx, Php…
  • Configurações do sistema de gerenciamento de banco de dados (SGBD) – MySQL, PostgreSQL
  • Otimize o esquema do banco de dados e altere os índices
  • Otimize aplicativos – Código, Consultas, Arquitetura…

Muitos desenvolvedores experientes não veem o ajuste de desempenho do banco de dados como uma oportunidade para melhorar o desempenho de seus aplicativos porque sabem pouco sobre esse domínio. Eles gastam muito tempo otimizando a base de código, mas chega a um ponto em que não traz mais um resultado valioso pelo tempo e energia investidos. Nossa pesquisa sobre como o ajuste do MySQL afeta positivamente o desempenho de aplicativos web populares de código aberto tem como objetivo mostrar esse fato aos desenvolvedores.

Abordagem de teste

Nosso procedimento de teste para Laravel Aimeos nos permite comparar o desempenho do aplicativo antes e depois da configuração usando dados propagados. Ao executar o teste primeiro com a configuração padrão, obtemos resultados de controle valiosos para comparar a configuração ajustada.

Usamos o seguinte processo para preparar e testar cada aplicação:

  1. Implante o Laravel Aimeos.
  2. Banco de dados de sementes com dados.
  3. Preparar teste para JMeter.
  4. Execute o teste por 10 minutos – Execute o teste JMeter usando a plataforma de teste de desempenho Blazemeter.
  5. Ajuste a configuração do MariaDB – Após o teste de configuração padrão, nossa configuração permaneceu a mesma, mas o MariaDB foi ajustado para carga de trabalho, recursos do servidor e tamanho do banco de dados.
  6. Teste de nova execução – Repetido o teste JMeter usando Blazemeter para a configuração ajustada.

Publicamos testes JMeter, MySQL Status e MySQL Variables durante testes no Github.

Quais métricas analisamos?

As métricas que analisamos durante esta pesquisa são:

  1. Tempo de Resposta ( Latência ) é o tempo entre o envio da solicitação e seu processamento no lado do servidor até o momento em que o cliente recebe o primeiro byte. É a métrica importante que fornece informações sobre o desempenho do servidor.
  2. Consultas por segundo é uma métrica que mede quantas consultas o servidor de banco de dados executa por segundo.
  3. Utilização da CPU.

Coletamos métricas de Utilização da CPU e Consultas por segundo para comparar a carga de trabalho.

Laravel Aimeos

Aimeos Laravel é uma estrutura popular de aplicativos da web de comércio eletrônico para a criação de lojas online, mercados e aplicativos B2B. Com o Aimeos, os usuários podem criar lojas de comércio eletrônico com API first para Laravel que podem ser dimensionadas para suportar mais de 1 bilhão de itens. Está disponível em mais de 30 idiomas e tem mais de 300.000 instalações.

Configuração de teste

Para testar o Aimeos, iniciamos o teste com dez usuários, mas tivemos que diminuir o número de usuários porque não conseguimos finalizar o teste com a configuração padrão.

Semeamos o banco de dados com dados de 500 Mb.
A duração do nosso teste foi de 10 minutos.

Nós costumavamos:

  • Instância AWS EC2 c5.xlarge com Debian 11 instalado como sistema operacional,
  • Apache como servidor web,
  • MariaDB 10.5 definido para a configuração padrão com tamanho de banco de dados de 500 MB.

Configuração MySQL

A configuração usada para Aimeos Laravel é a seguinte:

Configuração ajustada para Laravel Aimeos 500Mb

query_cache_type=1
query_cache_size=134217728
query_cache_limit=16777216
query_cache_min_res_unit=4096
thread_cache_size=0
key_buffer_size=8388608
max_allowed_packet=1073741824
sort_buffer_size=2097152
read_rnd_buffer_size=262144
bulk_insert_buffer_size=8388608
myisam_sort_buffer_size=8388608
innodb_buffer_pool_chunk_size=134217728
innodb_buffer_pool_size=805306368
max_heap_table_size=16777216
tmp_table_size=16777216
join_buffer_size=8388608
max_connections=151
table_open_cache=2048
table_definition_cache=1408
innodb_flush_log_at_trx_commit=1
innodb_log_file_size=201326592
innodb_log_buffer_size=16777216
innodb_write_io_threads=4
innodb_read_io_threads=4
innodb_file_per_table=1
innodb_flush_method=O_DIRECT
innodb_thread_concurrency=0
innodb_purge_threads=4
optimizer_search_depth=0
thread_handling=pool-of-threads
thread_pool_size=2

Resultados dos testes

Os resultados dos testes do Aimeos Laravel apresentaram melhorias drásticas de desempenho entre as configurações padrão e ajustadas.

A otimização do MySQL resultou em uma melhoria significativa no Tempo de Resposta médio do servidor, que foi reduzido de 1,4 segundos para menos de 800 milissegundos.

O

tempo de resposta (latência) caiu 42% e a utilização média da CPU 86%, enquanto as consultas por segundo aumentaram incríveis 291%, de 12 a 35 consultas por segundo.

O gráfico dos resultados está disponível abaixo:

How MySQL Tuning Improves the Laravel Performance Tempo de resposta (ms), configuração MySQL ajustada pelo Aimeos versus padrão
How MySQL Tuning Improves the Laravel Performance Utilização da CPU (%), configuração MySQL ajustada pelo Aimeos vs padrão
How MySQL Tuning Improves the Laravel Performance Consultas por segundos, configuração MySQL ajustada pelo Aimeos versus padrão

Colaboradores da comunidade

Nós nos unimos aos desenvolvedores do Laravel Gevorg Mkrtchyan e Sergey Sinitsa da empresa Initlab para investigar esta linha de questionamento e estamos muito gratos por sua experiência.
Sergey implantou Aimeos e Gevorg preparou o código para semear o banco de dados.

Conclusão

Nosso procedimento de teste, usando Aimeos Laravel, mostrou melhorias dramáticas em Tempo de resposta (latência), Utilização da CPU, e Consultas por segundo após configurar o banco de dados configuração do servidor.

Tempo de resposta (latência) caiu entre 42%, enquanto Utilização da CPU caiu 86%. Consultas por segundo aumentaram 291% no Aimeos Laravel 500MB.

Concluindo, o ajuste do MySQL é um aspecto essencial do gerenciamento de banco de dados que pode ter um impacto significativo no desempenho de aplicações Laravel. Aplicativos da web com baixo desempenho podem levar a tempos de carregamento de página maiores, processamento lento de solicitações e uma experiência do usuário ruim, o que pode afetar negativamente o SEO e as vendas. Ao otimizar o desempenho de aplicativos da web com ajuste do MySQL, empresas e organizações podem aumentar as vendas, visualizações de páginas, taxas de conversão e classificações de SEO.

Com esta pesquisa, esperamos mostrar o valor do ajuste do MySQL como um meio de melhorar o desempenho de aplicativos Laravel e encorajar os desenvolvedores Laravel a considerar esta prática ao otimizar o desempenho de seus aplicativos.

Usando ferramentas como Releem, os bancos de dados podem ser configurados automaticamente para desempenho ideal, reduzindo a carga das equipes de desenvolvimento de software.

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/drupaladmin/how-mysql-tuning-improves-the-laravel-performance-282j?1 Se houver alguma violação, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3