Оптимизация MySQL под большой нагрузкой

Оптимизация MySQL под большой нагрузкой

от Xazrat Xakkulov -
Количество ответов: 9

Помогите оптимизировать конфигурацию базу данных MySQL. сервер запушен в конце августа. В основном используется mod_quiz. 

Онлайн пользователей в 1 минуту около 800.

Список таблиц

Нагрузка

Тех. Хар. сервера:

CPU: Xeon Gold 6230N x 2, 40 ядро, 80 потоков.

RAM: 128 GB

Moodle V: 3.3.9


В ответ на Xazrat Xakkulov

Re: Оптимизация MySQL под большой нагрузкой

от Vadim Tabunshchik -
Изображение пользователя Developers
Настройки MySQL - это как ремонт в квартире, никогда не закончишь улыбаюсь
Во-первых, почему таблицы (да и вся БД, наверное) в utf8_general_ci, если должно быть utf8mb4_unicode_ci? Видно же отличие в таблицах - какая кодировка у bigbluebuttonbn_logs и у остальных.
Никто вам параметры тут не выложит, нужно настраивать и оотслеживать изменения, менять настройки и т.д.
Для первоначальных настроек читать идете сюда: https://docs.moodle.org/39/en/MySQL (у вас даже в конфиге ничего про кодировки нет), потом сюда: https://docs.moodle.org/39/en/Performance_recommendations#MySQL_performance
Вот это ещё в помощь: «Mysqltuner — это perl-скрипт, который анализирует статистику работы Mysql и выдает свои рекомендации по оптимизации настроек Mysql сервера.»
В ответ на Vadim Tabunshchik

Re: Оптимизация MySQL под большой нагрузкой

от Xazrat Xakkulov -
мудл сам создал эти таблицы в utf8. я уже читал эти статьи и постоянно использую тюнер, тюнер всегда рекомендует увеличить max_join_size, не знаю сколько раз его увеличивал, рекомендация не меняется. еще один момент, у админа мудл не тормозит и летает кроме модуля теста, у пользователей даже вход в систему занимает около 10сек, сервер не загружается на 100%. не могу найти узкое место
В ответ на Xazrat Xakkulov

Re: Оптимизация MySQL под большой нагрузкой

от Xazrat Xakkulov -
я только что сделал нечто невероятное, тупо запустил cron.php, он очистил каких то 4 mb x 10, и теперь мудл летает, нагрузка ЦП тоже значительно упала с 30 на 5. 😂
В ответ на Xazrat Xakkulov

Re: Оптимизация MySQL под большой нагрузкой

от Vadim Tabunshchik -
Изображение пользователя Developers
>> мудл сам создал эти таблицы в utf8.
Вы какую версию Moodle ставили? Установка «с нуля» Moodle 3.1.5 и 3.2.2 (и новее) использует utf8mb4 по умолчанию, если сервер базы данных настроен соответствующим образом.
>> я уже читал эти статьи
Если читали, то почему до сих пор не сконвертировали таблицы в utf8mb4? Предупреждений нет никаких на странице проверки ПО сервера?
В ответ на Vadim Tabunshchik

Re: Оптимизация MySQL под большой нагрузкой

от Xazrat Xakkulov -
>> Вы какую версию Moodle ставили? Установка «с нуля» Moodle 3.1.5 и 3.2.2 (и новее) использует utf8mb4 по умолчанию, если сервер базы данных настроен соответствующим образом.

по моему я создал саму базу с utf8, так как старые версии использовали эту кодировку, а про utf8mb4 я узнал позже. не стал конвертировать так как есть риск сломать базу. сами таблицы создал мудл, не могу понять почему он не создал utf8mb4 , в конфиг файле стоит именно utf8mb4. и в конфиге mysql тоже стоит utf8mb4. если бы были какие то проблемы или зависимости, то как сам мудл при добавлении плагина bigbluebutton создал таблицы в utf8mb4? 

>> Предупреждений нет никаких на странице проверки ПО сервера?

никаких.

в базе данный были какие то бракованные строки, после использования cron проблемы автоматически были решены, данный момент нет никаких проблем, мудл вообще нигде ни при каких условиях не тормозит, макс нагрузка самого сервера 20-30%, средняя нагрузка 10%
В ответ на Xazrat Xakkulov

Re: Оптимизация MySQL под большой нагрузкой

от Vadim Dvorovenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода
если у вас такая большая нагрузка, рассмотрите вариант переезда на postgresql, возможно с ним всё будет по-другому.
изучите, какая часть нагрузки именно из-за mysql. Возможно, что нагрузку на ядра создаёт php, а не mysql.
изучите, какая часть времени процессора приходится на iowait. Возможно, что проблема просто в том, что диск не успевает отдавать данные с нужной скоростью. Обычно это проблема hdd, но с учетом того, сколько у вас ядер, и ssd может не справляться.
У вас хорошо с памятью, но пока не ясно, что с диском. Рассмотрите вариант настройки кэша в редис, может значительно снизить нагрузку на диск
cron.php должен запускаться раз в минуту
В ответ на Vadim Dvorovenko

Re: Оптимизация MySQL под большой нагрузкой

от Xazrat Xakkulov -
проблемы были именно в базе данных, как я понял были бракованные строки, cron исправил все, теперь все летает
В ответ на Xazrat Xakkulov

Re: Оптимизация MySQL под большой нагрузкой

от Евгений Здоровый -

В качестве оптимизации БД рекомендую еще посмотреть в сторону больше грузить данных в озу. всякие buffer size. Так вы разгрузите и дисковое хранилище а запросы отчасти в  памяти будут выполняться.  Что и проц разгрузит существенней. Единственное сразу существенно возрастет потребление памяти.

В ответ на Евгений Здоровый

Re: Оптимизация MySQL под большой нагрузкой

от Xazrat Xakkulov -
так и было сделано, но все эти оптимизации не помогали вовсе, я запустил крон и все проблемы решились сами по себе, а сейчас крон работает в автоматическом режиме, все летает, нагрузка на сервер в пике ~20%