Рейтинг:0

Проблема с производительностью MySQL из-за кэширования

флаг cn
perl mysqltuner.pl --host 127.0.0.1

[--] Пропущена проверка версии для скрипта MySQLTuner
[--] Выполнение тестов на 127.0.0.1:3306
[!!] Успешная аутентификация без пароля - РИСК БЕЗОПАСНОСТИ!
[!!] не удалось выполнить: SHOW SLAVE STATUS\G
[!!] FAIL Execute SQL / код возврата: 256
[!!] не удалось выполнить: SHOW SLAVE HOSTS\G
[!!] FAIL Execute SQL / код возврата: 256
[OK] В настоящее время работает поддерживаемая версия MySQL 10.4.17-MariaDB.
[OK] Работа на 64-битной архитектуре
 
-------- Статистика механизма хранения --------------------------------------- --------------------------
[--] Статус: +Aria +CSV +InnoDB +MEMORY +MRG_MyISAM +MyISAM +PERFORMANCE_SCHEMA +SEQUENCE 
[!!] InnoDB включен, но не используется
[OK] Всего фрагментированных таблиц: 0
 
-------- Показатели производительности анализа --------------------------------------- -----------------------
[--] innodb_stats_on_metadata: ВЫКЛ.
[OK] Статистические данные не обновляются при запросе INFORMATION_SCHEMA.
 
-------- Рекомендации по безопасности ---------------------------------------- --------------------------
[--] Пропущено, так как ни один из известных столбцов авторизации не существует
 
-------- Рекомендации по безопасности CVE --------------------------------------- -----------------------
[!!] CVE-2021-27928(<= 10.4.17): «В MariaDB 10.2 до 10.2.37 была обнаружена проблема с удаленным выполнением кода.
[!!] Найдено 1 CVE для вашей версии MySQL.
 
-------- Показатели эффективности ---------------------------------------- -------------------------------
[--] Up for: 2d 20h 44m 2s (48K q [0,196 qps], 384 соединения, TX: 885M, RX: 18M)
[--] Чтение/запись: 99%/1%
[--] Двоичное логирование отключено
[--] Физическая память: 1,8 ГБ
[--] Максимальный объем памяти MySQL: 46,5 ГБ
[--] Другая память процесса: 0B
[--] Всего буферов: 8,3 Гб в глобальном масштабе + 258,9 Мб на поток (151 макс. поток)
[--] P_S Максимальное использование памяти: 0B
[--] Galera GCache Максимальное использование памяти: 0B
[!!] Максимально достигнутое использование памяти: 11,3 ГБ (617,92% установленной оперативной памяти)
[!!] Максимально возможное использование памяти: 46,5 ГБ (2537,09% установленной оперативной памяти)
[!!] Общее возможное использование памяти с другим процессом превысило память
[OK] Медленные запросы: 0% (0/48K)
[OK] Максимальное использование доступных подключений: 7% (12/151)
[OK] Прерванные соединения: 1,30% (5/384)
[!!] разрешение имен активно: для каждого нового соединения выполняется обратное разрешение имен, что может снизить производительность
[!!] Кэш запросов может быть отключен по умолчанию из-за конфликта мьютексов.
[!!] Эффективность кеша запросов: 19,8% (11 КБ кэшировано / 56 КБ выбрано)
[!!] Удалений кеша запросов в день: 7584
[OK] Сортировки, требующие временных таблиц: 0% (1 временная сортировка / 9K сортировка)
[OK] Нет объединений без индексов
[OK] Временные таблицы, созданные на диске: 14% (1 КБ на диске / всего 10 КБ)
[OK] Показатель попаданий в кэш потоков: 80% (73 созданных / 384 подключения)
[OK] Частота попаданий в кэш таблиц: 99 % (74 тыс. обращений / 74 тыс. запросов)
[OK] table_definition_cache(400) превышает число таблиц(77)
[OK] Используемый лимит открытых файлов: 0% (48/32K)
[OK] Немедленное получение блокировок таблиц: 99% (немедленная блокировка 5 000 / 5 000 блокировок)
 
-------- Схема производительности ---------------------------------------- --------------------------------
[--] Схема производительности отключена.
[--] Память, используемая P_S: 0B
[--] Схема Sys не установлена.
 
-------- Показатели ThreadPool ---------------------------------------- --------------------------------
[--] Статистика ThreadPool включена.
[--] Размер пула потоков: 1 поток(и).
[--] Использование значения по умолчанию достаточно для вашей версии (10.4.17-MariaDB)
 
-------- Показатели MyISAM ---------------------------------------- ------------------------------------
[!!] Используемый буфер ключей: 18,2% (используется 24 МБ / кэш-память 134 МБ)
[OK] Размер ключевого буфера / общее количество индексов MyISAM: 128,0M/0B
 
-------- Метрики InnoDB ---------------------------------------- ------------------------------------
[--] InnoDB включен.
[!!] Нет таблиц Innodb
[--] Параллелизм потоков InnoDB: 0
[OK] Файл InnoDB для каждой таблицы активирован
[OK] Буферный пул InnoDB/размер данных: 8.0G/0B
[!!] Отношение размера файла журнала InnoDB к размеру пула буферов InnoDB (1,171875%): 48,0M * 2/8,0G должно быть равно 25%
[OK] Экземпляры буферного пула InnoDB: 8
[--] Количество фрагментов пула буферов InnoDB: 64 для 8 экземпляров пула буферов.
[OK] Innodb_buffer_pool_size приведен в соответствие с Innodb_buffer_pool_chunk_size и Innodb_buffer_pool_instances
[OK] Эффективность буфера чтения InnoDB: 100,00% (609465732 совпадения/всего 609485088)
[!!] Эффективность InnoDB Write Log: 88,45% (3109 обращений/всего 3515)
[OK] Ожидания в журнале InnoDB: 0,00% (0 ожиданий / 406 записей)
 
-------- Метрики Арии ---------------------------------------- --------------------------------------
[--] Механизм хранения Aria включен.
[OK] Размер кэша страниц Aria / общее количество индексов Aria: 128.0M/0B
[!!] Показатель попаданий в кэш страниц Aria: 94,9% (28 КБ в кэше / 1 КБ на чтении)
 
-------- Показатели TokuDB ---------------------------------------- ------------------------------------
[--] TokuDB отключен.
 
-------- Метрики XtraDB ---------------------------------------- ------------------------------------
[--] XtraDB отключен.
 
-------- Галера Метрика ---------------------------------------- ------------------------------------
[--] Галера отключена.
 
-------- Показатели репликации ---------------------------------------- -------------------------------
[--] Galera Синхронная репликация: НЕТ
[--] Для этого сервера нет подчиненных(ых) репликации.
[--] Формат бинлога: СМЕШАННЫЙ
[--] Поддержка XA включена: ВКЛ.
[--] Мастер полусинхронной репликации: ВЫКЛ.
[--] Полусинхронная репликация Slave: OFF
[--] Это автономный сервер

У одного из наших рабочих серверов есть некоторые проблемы с производительностью, я обнаружил, что это в основном связано с MySQL, и после запуска MySQLTuner я обнаружил несколько интересных вещей. Удивительно, но нет джойна без индексов, так что я не думаю, что смогу многое сделать и, похоже, это связано с кешированием, и я знаю, что мы используем W3T Total Cache, но я не вижу никаких конфигов, кроме общих в панель администратора WP, поэтому мне интересно, есть ли способы кэшировать больше запросов, потому что по какой-то причине кэшируется только 20% из них. И сокращение кеша запросов слишком велико, поэтому мне интересно, правильно ли я понимаю эти показатели, и я мог бы сокращать их меньше каждый день, чтобы иметь возможность кэшировать не менее 40%. Кроме того, я думаю, что увеличение оперативной памяти могло бы помочь нашему серверу, но это почти другая проблема.

Эти кажутся наиболее актуальными:

[!!] Максимально достигнутое использование памяти: 11,3 ГБ (617,92% установленной оперативной памяти)
[!!] Максимально возможное использование памяти: 46,5 ГБ (2537,09% установленной оперативной памяти)
[!!] Общее возможное использование памяти с другим процессом превысило память
[!!] разрешение имен активно: для каждого нового соединения выполняется обратное разрешение имен, что может снизить производительность
[!!] Кэш запросов может быть отключен по умолчанию из-за конфликта мьютексов.
[!!] Эффективность кеша запросов: 19,8% (11 КБ кэшировано / 56 КБ выбрано)
[!!] Удалений кеша запросов в день: 7584
Рейтинг:0
флаг ua

я подозреваю, что обмен это настоящая проблема. У вас превышен объем оперативной памяти. Вот что бросается мне в глаза:

Физическая память: 1,8 г
Буферный пул InnoDB/размер данных: 8.0G/0B
Максимальное использование доступных подключений: 7% (12/151)

После переключения на InnoDB и отключения QC (как рекомендует Tero) обратите внимание, что ваша оперативная память слишком мала для данного innodb_buffer_pool_size.

В частности, внесите следующие изменения в конфигурацию:

innodb_buffer_pool_size = 500M
макс_подключения = 30
query_cache_type = 0
query_cache_size = 0
key_buffer_size = 24M

Если у вас все еще есть проблемы после внесения этих изменений, задайте новый вопрос на dba.stackexchange.com; это лучший форум для настройки MySQL/MariaDB.

Рейтинг:0
флаг us

Все ваши таблицы кажутся таблицами MyISAM. В настоящее время рекомендуется настроить все таблицы как таблицы InnoDB.

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

После изменения всех таблиц на InnoDB снова запустите MySQLTuner и настройте буферный пул InnoDB в соответствии с его рекомендациями.

Вы также должны обновить свой сервер MySQL, так как ваша версия имеет открытую уязвимость.

Michael Hampton avatar
флаг cz
Это MariaDB, а не MySQL; что не так с использованием AriaDB, TokuDB или XtraDB?
флаг us
Скорее всего ничего, кроме моего неполного знания современного состояния дел :) Спасибо, что упомянули об этом, они выглядят интересно.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.