"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Cómo el ajuste de MySQL mejora el rendimiento de Laravel

Cómo el ajuste de MySQL mejora el rendimiento de Laravel

Publicado el 2024-07-30
Navegar:719

El ajuste de la configuración de MySQL es un componente importante de la gestión de bases de datos implementada por administradores y profesionales de bases de datos. Su objetivo es configurar la base de datos para que se adapte a su hardware y carga de trabajo. Pero más allá del ámbito de la gestión de bases de datos, la utilidad del ajuste de la configuración de MySQL se ignora en gran medida.

Presumimos que el ajuste de MySQL puede afectar significativamente el rendimiento de las aplicaciones web. Si podemos mostrar el valor del ajuste de MySQL, creemos que las empresas y organizaciones podrían estar interesadas en incorporar esta práctica a mayor escala.

Cómo mejorar el rendimiento de la aplicación Laravel

La mejor manera de mejorar el rendimiento de las aplicaciones mediante ajustes es con un enfoque integral que aborde las siguientes áreas:

  • Recursos del servidor: CPU, memoria, almacenamiento
  • Configuraciones de software: Linux, Nginx, Php…
  • Configuraciones del sistema de gestión de bases de datos (DBMS): MySQL, PostgreSQL
  • Optimizar el esquema de la base de datos y cambiar los índices
  • Optimizar aplicaciones: código, consultas, arquitectura…

Muchos desarrolladores experimentados no ven el ajuste del rendimiento de la base de datos como una oportunidad para mejorar el rendimiento de sus aplicaciones porque saben poco sobre este dominio. Dedican mucho tiempo a optimizar el código base, pero llega un punto en el que ya no produce un resultado valioso por el tiempo y la energía invertidos. Nuestra investigación sobre cómo el ajuste de MySQL afecta positivamente el rendimiento de aplicaciones web populares de código abierto tiene como objetivo mostrar este hecho a los desarrolladores.

Enfoque de prueba

Nuestro procedimiento de prueba para Laravel Aimeos nos permite comparar el rendimiento de la aplicación antes y después de la configuración utilizando datos inicializados. Al ejecutar primero la prueba con la configuración predeterminada, obtenemos valiosos resultados de control para comparar la configuración ajustada.

Utilizamos el siguiente proceso para preparar y probar cada aplicación:

  1. Implementar Laravel Aimeos.
  2. Base de datos de semillas con datos.
  3. Preparar prueba para JMeter.
  4. Ejecutar la prueba durante 10 minutos: ejecutó la prueba de JMeter utilizando la plataforma de prueba de rendimiento Blazemeter.
  5. Ajustar la configuración de MariaDB: después de las pruebas de configuración predeterminada, nuestra configuración siguió siendo la misma, pero MariaDB se ajustó para la carga de trabajo, los recursos del servidor y el tamaño de la base de datos.
  6. Volver a ejecutar la prueba: se repitió la prueba de JMeter usando Blazemeter para la configuración ajustada.

Publicamos pruebas de JMeter, estado de MySQL y variables de MySQL durante las pruebas en Github.

¿Qué métricas analizamos?

Las métricas que analizamos durante esta investigación son:

  1. Tiempo de respuesta (latencia) es el tiempo entre el envío de la solicitud y su procesamiento en el lado del servidor hasta el momento en que el cliente recibe el primer byte. Es la métrica importante que le brinda información sobre el rendimiento del servidor.
  2. Consultas por segundo es una métrica que mide cuántas consultas ejecuta el servidor de la base de datos por segundo.
  3. Utilización de CPU.

Recopilamos métricas de utilización de CPU y consultas por segundo para comparar la carga de trabajo.

Laravel Aimeos

Aimeos Laravel es un popular marco de aplicación web de comercio electrónico para crear tiendas en línea, mercados y aplicaciones B2B. Con Aimeos, los usuarios pueden crear tiendas de comercio electrónico basadas en API para Laravel que pueden escalar para admitir más de mil millones de artículos. Está disponible en más de 30 idiomas y tiene más de 300.000 instalaciones.

Configuración de prueba

Para probar Aimeos, comenzamos la prueba con diez usuarios, pero tuvimos que disminuir el número de usuarios porque no pudimos terminar la prueba con la configuración predeterminada.

Sembramos la base de datos con 500 Mb de datos.
La duración de nuestra prueba fue de 10 minutos.

Nosotros usamos:

  • Instancia AWS EC2 c5.xlarge con Debian 11 instalado como sistema operativo,
  • Apache como servidor web,
  • MariaDB 10.5 configurado con la configuración predeterminada con un tamaño de base de datos de 500 MB.

Configuración de MySQL

La configuración utilizada para Aimeos Laravel es la siguiente:

Configuración 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 de las pruebas

Los resultados de las pruebas de Aimeos Laravel mostraron mejoras dramáticas en el rendimiento entre las configuraciones predeterminadas y optimizadas.

La optimización de MySQL resultó en una mejora significativa en el tiempo de respuesta promedio del servidor, que se redujo de 1,4 segundos a menos de 800 milisegundos.

El tiempo de respuesta (latencia) cayó un 42% y la utilización promedio de CPU un 86%, mientras que las consultas por segundo aumentaron un increíble 291%, de De 12 a 35 consultas por segundo.

El gráfico de los resultados está disponible a continuación:

How MySQL Tuning Improves the Laravel Performance Tiempo de respuesta (ms), configuración de MySQL optimizada de Aimeos frente a la predeterminada
How MySQL Tuning Improves the Laravel Performance Utilización de CPU (%), configuración MySQL optimizada de Aimeos frente a la predeterminada
How MySQL Tuning Improves the Laravel Performance Consultas por segundo, configuración MySQL optimizada de Aimeos frente a la predeterminada

Colaboradores de la comunidad

Nos asociamos con los desarrolladores de Laravel, Gevorg Mkrtchyan y Sergey Sinitsa de la empresa Initlab, para investigar esta línea de cuestionamiento y estamos muy agradecidos por su experiencia.
Sergey implementó Aimeos y Gevorg preparó el código para inicializar la base de datos.

Conclusión

Nuestro procedimiento de prueba, utilizando Aimeos Laravel, mostró mejoras dramáticas en Tiempo de respuesta (latencia), Utilización de CPU y Consultas por segundo después de configurar la base de datos. configuración del servidor.

Tiempo de respuesta (latencia) cayó entre un 42%, mientras que Utilización de CPU cayó un 86%. Las consultas por segundo aumentaron en Aimeos Laravel 500MB en un 291%.

En conclusión, el ajuste de MySQL es un aspecto esencial de la gestión de bases de datos que puede tener un impacto significativo en el rendimiento de las aplicaciones Laravel. Las aplicaciones web con un rendimiento deficiente pueden provocar mayores tiempos de carga de la página, un manejo lento de las solicitudes y una mala experiencia del usuario, lo que puede afectar negativamente al SEO y las ventas. Al optimizar el rendimiento de las aplicaciones web con ajuste de MySQL, las empresas y organizaciones pueden aumentar las ventas, las páginas vistas, las tasas de conversión y las clasificaciones SEO.

Con esta investigación, esperamos mostrar el valor del ajuste de MySQL como un medio para mejorar el rendimiento de las aplicaciones Laravel y alentar a los desarrolladores de Laravel a considerar esta práctica al optimizar el rendimiento de sus aplicaciones.

Utilizando herramientas como Releem, las bases de datos se pueden configurar automáticamente para un rendimiento óptimo, lo que reduce la carga de los equipos de desarrollo de software.

Declaración de liberación Este artículo se reproduce en: https://dev.to/drupaladmin/how-mysql-tuning-improves-the-laravel-performance-282j?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3