Рейтинг:0

ЦП MySQL с высокой нагрузкой

флаг ng

У меня проблема с MariaDB, при подключении аналитики ~ 200 mysql начал загружаться на 132% и увеличил нагрузку основного процессора примерно до 40%. Делает сайт очень медленным Я использую Centos 7 (8 ГБ оперативной памяти, 2 ядра, NVME SSD + Nginx + php-fpm)

[клиент]
#пароль = ваш_пароль
порт = 3306
сокет = /var/lib/mysql/mysql.sock

[mysqld]
ожидание_тайм-аут = 300
интерактивный_таймаут = 300
binlog_cache_size = 128 КБ
thread_stack = 256 КБ
join_buffer_size = 2048 КБ
query_cache_type = 1
max_heap_table_size = 512M
порт = 3306
сокет = /var/lib/mysql/mysql.sock
каталог данных = /var/lib/mysql
default_storage_engine = InnoDB
performance_schema_max_table_instances = 400
table_definition_cache = 400
пропустить внешнюю блокировку
key_buffer_size = 384M
max_allowed_packet = 100G
table_open_cache = 384
sort_buffer_size = 1024 КБ
net_buffer_length = 4 КБ
read_buffer_size = 1024 КБ
read_rnd_buffer_size = 768 КБ
myisam_sort_buffer_size = 16M
thread_cache_size = 128
query_cache_size = 0
query_cache_type = 0
query_cache_limit = 8M
tmp_table_size = 512M
#sql-mode=NO_ENGINE_SUBSTITUTION

#скип-имя-разрешение
макс_подключения = 500
max_connect_errors = 100
open_files_limit = 65535

лог-бен = mysql-бен
binlog_format = смешанный
идентификатор сервера = 1
expire_logs_days = 10
slow_query_log=1
файл журнала медленного запроса =/home/abc.com.com/logs/mysql-slow.log
long_query_time = 3
#log_queries_not_using_indexes=on


innodb_data_home_dir = /var/lib/mysql
innodb_data_file_path = ibdata1:10M:авторасширение
innodb_log_group_home_dir = /var/lib/mysql
innodb_buffer_pool_size = 1G
innodb_log_file_size = 128M
innodb_log_buffer_size = 32M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
innodb_max_dirty_pages_pct = 90
innodb_read_io_threads = 2
innodb_write_io_threads = 2
innodb_buffer_pool_instances = 1


[mysqldump]
быстрый
max_allowed_packet = 500M

[mysql]
без автоматического перефразирования

[myisamchk]
key_buffer_size = 64M
sort_buffer_size = 1M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
интерактивный тайм-аут

И настройка через mysqltuner

-------- Статистика механизма хранения --------------------------------------- --------------------------
[--] Статус: +ARCHIVE +Aria +BLACKHOLE +CSV +FEDERATED +InnoDB +MEMORY +MRG_MyISAM +MyISAM +PERFORMANCE_SCHEMA
[--] Данные в таблицах InnoDB: 48.8M (Таблицы: 21)
[OK] Всего фрагментированных таблиц: 0

-------- Показатели производительности анализа --------------------------------------- -----------------------
[--] innodb_stats_on_metadata: ВЫКЛ.
[OK] Статистические данные не обновляются при запросе INFORMATION_SCHEMA.

-------- Рекомендации по безопасности ---------------------------------------- --------------------------
[OK] Нет анонимных учетных записей ни для каких пользователей базы данных
[OK] Всем пользователям базы данных назначены пароли
[!!] Нет основного списка файлов паролей!

-------- Рекомендации по безопасности CVE --------------------------------------- -----------------------
[--] Пропущено из-за неопределенной опции --cvefile

-------- Показатели эффективности ---------------------------------------- -------------------------------
[--] Up for: 8 м 0 с (85 тыс. запросов [178,621 qps], 6 тыс. подключений, TX: 41 млн, RX: 7 млн)
[--] Чтение/запись: 98%/2%
[--] Двоичное логирование включено (GTID MODE: ON)
[--] Физическая память: 7,6 ГБ
[--] Максимальный объем памяти MySQL: 504,5 ГБ
[--] Другая память процесса: 0B
[--] Всего буферов: 2,0 Гб в глобальном масштабе + 1,0 Гб на поток (макс. 500 потоков)
[--] P_S Максимальное использование памяти: 0B
[--] Galera GCache Максимальное использование памяти: 0B
[!!] Максимально достигнутое использование памяти: 95,5 ГБ (1250,25% установленной оперативной памяти)
[!!] Максимально возможное использование памяти: 504,5G (6604,94% установленной RAM)
[!!] Общее возможное использование памяти с другим процессом превысило память
[OK] Медленные запросы: 0% (0/85K)
[OK] Максимальное использование доступных подключений: 18% (93/500)
[OK] Прерванные соединения: 0,04% (3/6727)
[!!] разрешение имен активно: для каждого нового соединения выполняется обратное разрешение имен, что может снизить производительность
[OK] Кэш запросов отключен по умолчанию из-за конфликта мьютексов на многопроцессорных машинах.
[OK] Сортировки, требующие временных таблиц: 0% (0 временных сортировок / 700 сортировок)
[OK] Нет объединений без индексов
[!!] Временные таблицы, созданные на диске: 88% (5 КБ на диске / 6 КБ всего)
[OK] Показатель попаданий в кэш потоков: 98 % (93 созданных / 6 000 подключений)
[OK] Частота попаданий в кэш таблиц: 215% (114 открытых / 53 открытых)
[OK] table_definition_cache(400) превышает число таблиц(261)
[OK] Используемый лимит открытых файлов: 0% (29/65K)
[OK] Немедленное получение блокировок таблиц: 100 % (65 000 немедленных / 65 000 блокировок)
[OK] Доступ к кэш-памяти Binlog: 100,00% (1144 памяти / 1144 всего)

-------- Схема производительности ---------------------------------------- --------------------------------
[--] Схема производительности отключена.
[--] Память, используемая P_S: 0B

-------- Показатели ThreadPool ---------------------------------------- --------------------------------
[--] Статистика ThreadPool включена.
[--] Размер пула потоков: 2 потока.
[--] Использование значения по умолчанию достаточно для вашей версии (10.0.38-MariaDB)

-------- Показатели MyISAM ---------------------------------------- ------------------------------------
[!!] Используемый буфер ключей: 18,7% (используется 75 МБ / кэш 402 МБ)
[OK] Размер ключевого буфера / общее количество индексов MyISAM: 384,0M/123,0K
[OK] Частота попаданий в буфер ключа чтения: 99,7% (355 кэшированных/1 чтение)
[OK] Частота попаданий в буфер ключа записи: 100,0% (96 операций кэширования / 96 операций записи)

-------- Метрики InnoDB ---------------------------------------- ------------------------------------
[--] InnoDB включен.
[--] Параллелизм потоков InnoDB: 0
[OK] Файл InnoDB для каждой таблицы активирован
[OK] Буферный пул InnoDB/размер данных: 1.0G/48.8M
[OK] Отношение размера файла журнала InnoDB к размеру буферного пула InnoDB: 128,0M * 2/1,0G должно быть равно 25%
[OK] Экземпляры буферного пула InnoDB: 1
[--] Размер блока буферного пула InnoDB не используется или не определен в вашей версии
[OK] Эффективность буфера чтения InnoDB: 100,00% (422760044 совпадения/всего 422761190)
[!!] Эффективность InnoDB Write Log: 46,23% (484 обращения/всего 1047)
[OK] Ожидания в журнале InnoDB: 0,00% (0 ожиданий / 1531 запись)

-------- Метрики Арии ---------------------------------------- --------------------------------------
[--] Механизм хранения Aria включен.
[OK] Размер кэша страниц Aria / общее количество индексов Aria: 128.0M/0B
[OK] Показатель попаданий в кэш страниц Aria: 98,6% (146 в кэше / 2 чтения)

-------- Показатели TokuDB ---------------------------------------- ------------------------------------
[--] TokuDB отключен.

-------- Метрики XtraDB ---------------------------------------- ------------------------------------
[--] XtraDB отключен.

-------- Галера Метрика ---------------------------------------- ------------------------------------
[--] Галера отключена.

-------- Показатели репликации ---------------------------------------- -------------------------------
[--] Galera Синхронная репликация: НЕТ
[--] Для этого сервера нет подчиненных(ых) репликации.
[--] Формат бинлога: СМЕШАННЫЙ
[--] Поддержка XA включена: ВКЛ.
[--] Мастер полусинхронной репликации: не активирован
[--] Полусинхронная репликация Slave: не активирована
[--] Это автономный сервер

-------- Рекомендации ----------------------------------------- ----------------------------------
Общие рекомендации:
    Управляйте строками предупреждений в файле /var/lib/mysql/dichvu.err
    Управляйте строками ошибок в файле /var/lib/mysql/dichvu.err
    MySQL был запущен в течение последних 24 часов — рекомендации могут быть неточными
    Уменьшите общий объем памяти MySQL для стабильности системы.
    Выделите этот сервер для своей базы данных для максимальной производительности.
    Настройте свои учетные записи только с IP-адресом или подсетями, затем обновите свою конфигурацию с помощью skip-name-resolve=1.
    Размер временной таблицы уже большой — уменьшите размер набора результатов
    Сократите количество запросов SELECT DISTINCT без предложений LIMIT.
    Для лучшей диагностики необходимо активировать схему производительности.
    Схему производительности не следует активировать для MariaDB 10.0 из-за проблем с производительностью.
Переменные для настройки:
  *** Максимальное использование памяти MySQL опасно велико ***
  *** Добавьте оперативную память перед увеличением переменных буфера MySQL ***
    performance_schema = ON включает PFS
    performance_schema = OFF отключить PFS

Пожалуйста, дайте мне совет в этом случае

Free -m при высокой загрузке процессора

              общее количество использованных бесплатных общих баффов/доступных кешей
Мем: 7821 1421 4755 431 1644 5715
Обмен: 1023 0 1023
Рейтинг:0
флаг ua

tmp_table_size = 512M -- Слишком высоко; ограничить его примерно до 1% оперативной памяти. (Это не сильно повлияет на ЦП, но поможет избежать свопинга.)

Высокая загрузка ЦП означает плохо проиндексированные или плохо сформулированные запросы. Используйте медленный журнал. Более: http://mysql.rjweb.org/doc.php/mysql_analysis#slow_queries_and_slowlog

Затем опубликуйте на stackoverflow.com; там больше людей, специфичных для MySQL.

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

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