«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как настройка MySQL улучшает производительность Laravel

Как настройка MySQL улучшает производительность Laravel

Опубликовано 30 июля 2024 г.
Просматривать:111

Настройка конфигурации MySQL — это важный компонент управления базами данных, осуществляемый профессионалами и администраторами баз данных. Его цель — настроить базу данных в соответствии с ее оборудованием и рабочей нагрузкой. Но за пределами сферы управления базами данных полезность настройки конфигурации MySQL по большей части игнорируется.

Мы предполагаем, что настройка MySQL может существенно повлиять на производительность веб-приложений. Если мы сможем продемонстрировать ценность настройки MySQL, мы считаем, что предприятия и организации могут захотеть внедрить эту практику в более широком масштабе.

Как улучшить производительность приложения Laravel

Повышение производительности приложений с помощью настройки лучше всего достигается при комплексном подходе, охватывающем следующие области:

  • Ресурсы сервера — процессор, память, хранилище
  • Конфигурации программного обеспечения – Linux, Nginx, Php…
  • Конфигурации системы управления базами данных (СУБД) — MySQL, PostgreSQL
  • Оптимизировать схему базы данных и изменить индексы
  • Оптимизация приложений — код, запросы, архитектура…

Многие опытные разработчики не рассматривают настройку производительности базы данных как возможность улучшить производительность своих приложений, поскольку мало знают об этой области. Они тратят много времени на оптимизацию кодовой базы, но доходит до того, что она уже не приносит ценного результата за вложенные время и энергию. Наше исследование того, как настройка MySQL положительно влияет на производительность популярных веб-приложений с открытым исходным кодом, направлено на то, чтобы продемонстрировать этот факт разработчикам.

Подход к тестированию

Наша процедура тестирования Laravel Aimeos позволяет нам сравнить производительность приложения до и после настройки, используя начальные данные. Запустив сначала тест с конфигурацией по умолчанию, мы получаем ценные результаты контроля для сравнения с настроенной конфигурацией.

Для подготовки и тестирования каждого приложения мы использовали следующий процесс:

  1. Развертывание Laravel Aimeos.
  2. База данных семян с данными.
  3. Подготовьте тест для JMeter.
  4. Выполните тест в течение 10 минут — запустите тест JMeter с использованием платформы тестирования производительности Blazemeter.
  5. Настройка конфигурации MariaDB. После тестирования конфигурации по умолчанию наша настройка осталась прежней, но MariaDB была настроена с учетом рабочей нагрузки, ресурсов сервера и размера базы данных.
  6. Повторный запуск теста — повторный тест JMeter с использованием Blazemeter для настроенной конфигурации.

Мы публиковали тесты JMeter, статус MySQL и переменные MySQL во время тестов на Github.

Какие показатели мы рассматривали?

В ходе этого исследования мы рассмотрели следующие показатели:

  1. Время ответа (задержка) — это время между отправкой запроса и его обработкой на стороне сервера до момента получения клиентом первого байта. Это важный показатель, который дает представление о производительности сервера.
  2. Запросов в секунду — это показатель, измеряющий количество запросов, выполняемых сервером базы данных в секунду.
  3. Загрузка процессора.

Мы собрали показатели Загрузка ЦП и Количество запросов в секунду для сравнения рабочей нагрузки.

Ларавел Эймеос

Aimeos Laravel — это популярная платформа веб-приложений для электронной коммерции, предназначенная для создания интернет-магазинов, торговых площадок и B2B-приложений. С помощью Aimeos пользователи могут создавать магазины электронной коммерции с использованием API для Laravel, которые могут масштабироваться для поддержки более 1 миллиарда товаров. Он доступен более чем на 30 языках и имеет более 300 000 установок.

Настройка тестирования

Чтобы протестировать Aimeos, мы начали тест с десятью пользователями, но нам пришлось уменьшить количество пользователей, поскольку мы не смогли завершить тест с конфигурацией по умолчанию.

Мы заполнили базу данных 500 МБ данных.
Продолжительность нашего теста составила 10 минут.

Мы использовали:

  • Экземпляр AWS EC2 c5.xlarge с установленным Debian 11 в качестве операционной системы,
  • Apache как веб-сервер,
  • В MariaDB 10.5 установлена ​​конфигурация по умолчанию с размером базы данных 500 МБ.

Конфигурация MySQL

Для Aimeos Laravel используется следующая конфигурация:

Настроенная конфигурация для 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

Результаты тестирования

Результаты тестирования Aimeos Laravel продемонстрировали значительное улучшение производительности между конфигурацией по умолчанию и настроенной конфигурацией.

Оптимизация MySQL привела к значительному улучшению среднего времени ответа сервера, которое было снижено с 1,4 секунды до менее 800 миллисекунд.

Время отклика (задержка) снизилось на 42 %, а средняя загрузка процессора – на 86 %, а количество запросов в секунду увеличилось на невероятные 291 %, с От 12 до 35 запросов в секунду.

График результатов доступен ниже:

How MySQL Tuning Improves the Laravel PerformanceВремя ответа (мс), настроенная конфигурация MySQL Aimeos по сравнению с конфигурацией по умолчанию
How MySQL Tuning Improves the Laravel PerformanceЗагрузка ЦП (%), настроенная конфигурация MySQL Aimeos по сравнению с конфигурацией по умолчанию
How MySQL Tuning Improves the Laravel PerformanceКоличество запросов в секунду, настроенная конфигурация MySQL Aimeos по сравнению с конфигурацией по умолчанию

Участники сообщества

Мы объединились с разработчиками Laravel Геворгом Мкртчяном и Сергеем Синицей из компании Initlab, чтобы изучить этот вопрос и очень благодарны за их опыт.
Сергей развернул Aimeos, а Геворг подготовил код для заполнения базы данных.

Заключение

Наша процедура тестирования с использованием Aimeos Laravel показала значительное улучшение показателей Время отклика (задержка), Загрузка ЦП и Количество запросов в секунду после настройки базы данных конфигурация сервера.

Время отклика (задержка) снизилось на 42 %, а Загрузка ЦП упала на 86 %. Количество запросов в секунду увеличилось в Aimeos Laravel 500MB на 291%.

В заключение, настройка MySQL — это важный аспект управления базами данных, который может оказать существенное влияние на производительность приложений Laravel. Плохо работающие веб-приложения могут привести к увеличению времени загрузки страниц, медленной обработке запросов и ухудшению пользовательского опыта, что может негативно повлиять на SEO и продажи. Оптимизируя производительность веб-приложений с помощью настройки MySQL, предприятия и организации могут увеличить продажи, количество просмотров страниц, коэффициенты конверсии и рейтинг SEO.

С помощью этого исследования мы надеемся продемонстрировать ценность настройки MySQL как средства повышения производительности приложений Laravel и призвать разработчиков Laravel учитывать эту практику при оптимизации производительности своих приложений.

Используя такие инструменты, как Releem, базы данных можно автоматически настроить для достижения оптимальной производительности, что снижает нагрузку на команды разработчиков программного обеспечения.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/drupaladmin/how-mysql-tuning-improves-the-laravel- Performance-282j?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить их.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3