Рейтинг:1

Сбой сервера, вызванный использованием ЦП MySQL

флаг gy

Помещение:

Я не администратор баз данных и не разбираюсь в серверах, но я единственный человек в компании, который может использовать кое-что из этого.

У нас есть Windows VPS со следующими характеристиками:

Процессор: Intel Xeon E5-2630 v4 2,20 ГГц
Оперативная память: 60 ГБ
SO: Центр обработки данных Windows Server 2016
Жесткий диск: 2 ТБ SSD

Здесь я разместил свои веб-приложения, которые обращаются к БД, размещенной на том же сервере, веб-приложения используются +- 1000 пользователей, которым требуются данные из БД через API веб-приложений, версия MySQL: 8.0.20 (Сервер сообщества MySQL — GPL)

А вот мой.ini

# Другие значения настройки по умолчанию
# Файл конфигурации экземпляра сервера MySQL
# --------------------------------------------- ---------------------
# Генерируется Мастером настройки экземпляра сервера MySQL
# 
# Инструкция по установке
# --------------------------------------------- ---------------------
# 
# В Linux вы можете скопировать этот файл в /etc/my.cnf, чтобы установить глобальные параметры,
# mysql-data-dir/my.cnf для установки специфичных для сервера параметров
# (@localstatedir@ для этой установки) или в
# ~/.my.cnf для установки пользовательских параметров.
# 
# В Windows вы должны хранить этот файл в каталоге установки 
# вашего сервера (например, C:\Program Files\MySQL\MySQL Server X.Y). К
# убедитесь, что сервер читает файл конфигурации, используйте параметр запуска 
# "--файл по умолчанию". 
# 
# Чтобы запустить сервер из командной строки, выполните это в 
# оболочка командной строки, например.
# mysqld --defaults-file="C:\Program Files\MySQL\MySQL Server X.Y\my.ini"
# 
# Чтобы установить сервер как службу Windows вручную, выполните это в 
# оболочка командной строки, например.
# mysqld --install MySQLXY --defaults-file="C:\Program Files\MySQL\MySQL Server X.Y\my.ini"
# 
# А затем выполните это в оболочке командной строки, чтобы запустить сервер, например
# чистый старт MySQLXY
# 
# Рекомендации по редактированию этого файла
# --------------------------------------------- ---------------------
# 
# В этом файле вы можете использовать все длинные опции, которые поддерживает программа.
# Если вы хотите узнать, какие параметры поддерживает программа, запустите программу
# с опцией "--help".
# 
# Более подробная информация об отдельных опциях также может быть
# найдено в руководстве.
# 
# Советы по изменению настроек см.
# https://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html
# 
# КЛИЕНТСКИЙ РАЗДЕЛ
# --------------------------------------------- ---------------------
# 
# Следующие параметры будут считываться клиентскими приложениями MySQL.
# Обратите внимание, что только клиентские приложения, поставляемые MySQL, гарантированно
# чтобы прочитать этот раздел. Если вы хотите, чтобы ваша собственная клиентская программа MySQL
# учитывайте эти значения, вам нужно указать это как опцию во время
# Инициализация клиентской библиотеки MySQL.
# 
[клиент]

# труба=

# сокет=MYSQL

порт=3306

[mysql]
нет звукового сигнала =

# набор символов по умолчанию =

# СЕРВЕРНАЯ СЕКЦИЯ
# --------------------------------------------- ---------------------
# 
# Следующие опции будут прочитаны сервером MySQL. Убедись в том, что
# вы правильно установили сервер (см. выше), поэтому он читает это 
# файл.=
# 
# тип_сервера=2
[mysqld]

# Следующие три параметра являются взаимоисключающими для SERVER_PORT ниже.
# пропуск сети =
# включить именованный канал =
# общая-память=

# общая-память-базовое-имя = MYSQL

# Труба, которую будет использовать сервер MySQL
# сокет=MYSQL

# Порт TCP/IP, который сервер MySQL будет прослушивать
порт=3306

# Путь к каталогу установки. Все пути обычно разрешаются относительно этого.
#basedir="C:/Program Files/MySQL/MySQL Server 8.0/"

# Путь к корню базы данных
datadir=C:/ProgramData/MySQL/MySQL Server 8.0/Данные

# Набор символов по умолчанию, который будет использоваться при создании новой схемы или таблицы.
# создан, но набор символов не определен
# сервер набора символов =

# Плагин аутентификации по умолчанию, который будет использоваться при подключении к серверу
default_authentication_plugin=mysql_native_password

# Механизм хранения по умолчанию, который будет использоваться при создании новых таблиц, когда
механизм хранения по умолчанию = INNODB

# Установить режим SQL на строгий
sql-mode = "STRICT_TRANS_TABLES, NO_ENGINE_SUBSTITUTION"

# Общая и медленная регистрация.
лог-выход = ФАЙЛ

общий журнал = 0

general_log_file="VMI384596.log"

журнал медленных запросов = 1

slow_query_log_file="VMI384596-slow.log"

long_query_time = 10

# Регистрация ошибок.
лог-ошибка = "VMI384596.err"

# ***** Группа, связанная с репликацией *****
# Задает базовое имя для двоичных файлов журнала. С бинарным журналированием
# включено, сервер регистрирует все операторы, которые изменяют данные в двоичном формате
# журнал, который используется для резервного копирования и репликации.
журнал-бен = "VMI384596-бен"

# ***** Группа, связанная с репликацией *****
# Устанавливает двоичный формат журнала и может быть любым из STATEMENT, ROW,
# или СМЕШАННЫЙ. ROW рекомендуется для групповой репликации.
# бинлог_формат=

# ***** Группа, связанная с репликацией *****
# Заставляет мастер записывать контрольную сумму для каждого события в двоичном журнале.
# binlog_checksum поддерживает значения NONE (отключено) и CRC32.
# По умолчанию используется CRC32. Когда отключено (значение NONE), сервер проверяет
# что он записывает в бинарный журнал только полные события, записывая
# и проверка длины события (а не контрольной суммы) для каждого события.
# NONE должен использоваться с групповой репликацией.
# binlog_checksum=

# ***** Группа, связанная с репликацией *****
# Базовое имя журнала ретрансляции. Сервер создает файлы журнала ретрансляции в
# путем добавления числового суффикса к базовому имени. Если вы укажете это
# параметр, указанное значение также используется в качестве базового имени для журнала ретрансляции
# индексный файл. Журналы ретрансляции увеличивают скорость за счет балансировки нагрузки между дисками.
# реле_лог=

# ***** Группа, связанная с репликацией *****
# Указывает идентификатор сервера. Для серверов, которые используются в топологии репликации,
# вы должны указать уникальный идентификатор сервера для каждого сервера репликации в
# диапазон от 1 до 2^32 - 1. �Unique� означает, что все идентификаторы должны быть разными
# от каждого другого идентификатора, используемого любым другим мастером или ведомым устройством репликации.
идентификатор сервера = 1

# ***** Группа, связанная с репликацией *****
# Имя хоста или IP-адрес ведомого устройства, которое будет передано ведущему.
# во время регистрации слейва. Это значение появляется в выводе SHOW SLAVE HOSTS.
# на главном сервере. Оставьте значение неустановленным, если вы не хотите, чтобы подчиненный
# зарегистрируйтесь у мастера.
# отчет_хост=0.0

# ***** Группа, связанная с репликацией *****
# Номер порта TCP/IP для подключения к ведомому, который должен быть сообщен ведущему во время
# регистрация раб. Установите это только в том случае, если ведомое устройство прослушивает порт, отличный от порта по умолчанию, или если
# у вас есть специальный туннель от мастера или других клиентов к слейву.
отчет_порт = 3306

# ***** Группа, связанная с репликацией *****
# Эта опция указывает, будут ли использоваться глобальные идентификаторы транзакций (GTID).
# используется для идентификации транзакций. ON необходимо использовать с групповой репликацией.
# gtid_mode=

# ***** Группа, связанная с репликацией *****
# Если этот параметр включен, сервер обеспечивает согласованность GTID, разрешая выполнение
# только операторы, которые можно безопасно зарегистрировать с помощью GTID. Вы должны установить это
# установите значение ON перед включением репликации на основе GTID.
# обеспечить_gtid_consistency=

# ***** Группа, связанная с репликацией *****
# Должны ли обновления, полученные подчиненным сервером от главного сервера, быть
# регистрируется в собственном двоичном журнале подчиненного устройства. Двоичное ведение журнала должно быть включено на
# подчиненный для этой переменной, чтобы иметь какой-либо эффект. ON должен использоваться с
# Групповая репликация.
# log_slave_updates=

# ***** Группа, связанная с репликацией *****
# Определяет, регистрирует ли подчиненный сервер статус главного и информацию о соединении
# в таблицу InnoDB в базе данных mysql или в файл в каталоге данных.
# Параметр TABLE требуется, когда настроено несколько каналов репликации.
# master_info_repository=

# ***** Группа, связанная с репликацией *****
# Определяет, регистрирует ли подчиненный сервер свою позицию в журналах ретрансляции в InnoDB
# таблица в базе данных mysql или в файл в каталоге данных. Настройка ТАБЛИЦА
# требуется при настройке нескольких каналов репликации.
# relay_log_info_repository=

# ***** Группа, связанная с репликацией *****
# Определяет алгоритм, используемый для хеширования записей, извлеченных во время транзакции. если ты
# используется групповая репликация, эта переменная должна быть установлена ​​в XXHASH64, так как процесс
# извлечения записей из транзакции требуется для обнаружения конфликтов на всех
# Участники группы.
# transaction_write_set_extraction=

# ПРИМЕЧАНИЕ. Измените это значение после того, как инициализация сервера не вступит в силу.
нижний_case_table_names=1

# Безопасный файл priv.
secure-file-priv="C:/ProgramData/MySQL/MySQL Server 8.0/Загрузки"

# Максимальное количество одновременных сеансов, которые сервер MySQL может
# позволять. Одно из этих подключений будет зарезервировано для пользователя с
# СУПЕР привилегии, позволяющие администратору войти в систему, даже если
# лимит подключений достигнут.
макс_подключения = 2000

# Количество открытых таблиц для всех потоков. Увеличение этого значения
# увеличивает количество файловых дескрипторов, которые требуются mysqld.
# Поэтому вы должны обязательно установить количество открытых файлов
# разрешено не менее 4096 в переменной "open-files-limit" в
# раздел [mysqld_safe]
table_open_cache=2000

# Максимальный размер внутренних (в памяти) временных таблиц. Если таблица
# становится больше, чем это значение, оно автоматически преобразуется в дисковое
# таблица на основе Это ограничение относится к одной таблице. Может быть много
# их.
tmp_table_size = 4G

# Сколько потоков мы должны хранить в кеше для повторного использования. Когда клиент
# отключается, потоки клиента помещаются в кеш, если их нет
# больше потоков, чем thread_cache_size из предыдущего. Это значительно снижает
# необходимое количество созданий потоков, если у вас много новых
# соединения. (Обычно это не дает заметных результатов
# улучшение, если у вас есть хорошая реализация потока.)
thread_cache_size = 10

# *** Специальные параметры MyISAM
# Максимальный размер временного файла, который MySQL может использовать при
# воссоздание индекса (во время REPAIR, ALTER TABLE или LOAD DATA INFILE.
# Если размер файла будет больше этого, будет создан индекс
# через кеш ключей (что медленнее).
myisam_max_sort_file_size=10G

# Размер буфера, который выделяется при сортировке индексов MyISAM
# во время REPAIR TABLE или при создании индексов с помощью CREATE INDEX
# или ИЗМЕНИТЬ ТАБЛИЦУ.
myisam_sort_buffer_size=256K

# Размер буфера ключей, используемого для кэширования индексных блоков для таблиц MyISAM.
# Не устанавливайте его больше, чем 30% доступной памяти, так как часть памяти
# также требуется ОС для кэширования строк. Даже если вы не используете
# Таблицы MyISAM, вы все равно должны установить его на 8-64M, так как он также будет
# используется для внутренних временных дисковых таблиц.
key_buffer_size = 64M

# Размер буфера, используемого для полного сканирования таблиц MyISAM.
# Выделяется на поток, если требуется полное сканирование.
read_buffer_size=64K

read_rnd_buffer_size=256K

# *** Специальные опции INNODB ***
# innodb_data_home_dir=

# Используйте эту опцию, если у вас есть сервер MySQL с включенной поддержкой InnoDB
# но вы не планируете его использовать. Это сэкономит память и место на диске
# и ускорить некоторые вещи.
# пропустить-innodb=

# Если установлено значение 1, InnoDB будет сбрасывать (fsync) журналы транзакций в
# диск при каждом коммите, что обеспечивает полное поведение ACID. Если ты
# готовы поступиться этой безопасностью, и у вас мало
# транзакций, вы можете установить это значение в 0 или 2, чтобы уменьшить дисковый ввод-вывод до
# логи. Значение 0 означает, что журнал записывается только в файл журнала и
# файл журнала сбрасывается на диск примерно раз в секунду. Значение 2
# означает, что журнал записывается в файл журнала при каждой фиксации, но журнал
# файл сбрасывается на диск примерно раз в секунду.
innodb_flush_log_at_trx_commit = 1

# Размер буфера, который InnoDB использует для буферизации данных журнала. Как только
# он заполнен, InnoDB придется сбросить его на диск. Как это смыто
# в любом случае раз в секунду, нет смысла делать его очень большим
# (даже при длинных транзакциях).


# InnoDB, в отличие от MyISAM, использует пул буферов для кэширования как индексов, так и
# Данные ряда. Чем больше вы установите это значение, тем меньше дискового ввода-вывода потребуется для
# доступ к данным в таблицах. На выделенном сервере базы данных вы можете установить это
# параметр до 80% объема физической памяти машины. Не устанавливайте его
# слишком большой, потому что конкуренция за физическую память может
# вызвать пейджинг в операционной системе. Обратите внимание, что в 32-битных системах вы
# может быть ограничено 2-3,5 ГБ пользовательской памяти на процесс, поэтому не
# установите слишком высокое значение.
innodb_buffer_pool_size=38G

# Размер каждого файла журнала в группе журналов. Вы должны установить комбинированный размер
# файлов журналов примерно до 25%-100% от размера вашего буферного пула, чтобы избежать
# ненужная активность очистки буферного пула при перезаписи файла журнала. Однако,
# обратите внимание, что больший размер файла журнала увеличит время, необходимое для
# процесс восстановления.
innodb_log_file_size=48M

# Количество потоков, разрешенных внутри ядра InnoDB. Оптимальное значение
# сильно зависит от приложения, оборудования и ОС
# свойства планировщика. Слишком высокое значение может привести к перегрузке потока.
innodb_thread_concurrency=21

# Размер приращения (в МБ) для увеличения размера автоматически расширяемого файла системного табличного пространства InnoDB, когда он заполняется.
innodb_autoextend_increment = 64

# Количество областей, на которые разделен буферный пул InnoDB.
# Для систем с пулами буферов размером в несколько гигабайт разделение пула буферов на отдельные экземпляры может улучшить параллелизм,
# уменьшая конкуренцию при чтении и записи кэшированных страниц разными потоками.
innodb_buffer_pool_instances=8

# Определяет количество потоков, которые могут одновременно входить в InnoDB.
innodb_concurrency_tickets=5000

# Определяет, как долго в миллисекундах (мс) блок, вставленный в старый подсписок, должен оставаться там после первого доступа, прежде чем
# его можно переместить в новый подсписок.
innodb_old_blocks_time=1000

# Указывает максимальное количество файлов .ibd, которые MySQL может держать открытыми одновременно. Минимальное значение равно 10.
innodb_open_files=300

# Когда эта переменная включена, InnoDB обновляет статистику во время операторов метаданных.
innodb_stats_on_metadata=0

# Когда innodb_file_per_table включен (по умолчанию в 5.6.6 и выше), InnoDB сохраняет данные и индексы для каждой вновь созданной таблицы
# в отдельном файле .ibd, а не в системном табличном пространстве.
innodb_file_per_table=1

# Используйте следующий список значений: 0 для crc32, 1 для strict_crc32, 2 для innodb, 3 для strict_innodb, 4 для отсутствия, 5 для strict_none.
innodb_checksum_algorithm = нет

пропустить-innodb-doublewrite =

# Количество невыполненных запросов на соединение, которые может иметь MySQL.
# Эта опция полезна, когда основной поток MySQL получает много запросов на соединение за очень короткое время.
# Затем основному потоку требуется некоторое время (хотя и очень мало), чтобы проверить соединение и запустить новый поток.
# Значение back_log указывает, сколько запросов может быть сложено в стек за это короткое время, прежде чем MySQL на мгновение
# перестает отвечать на новые запросы.
# Вам нужно увеличить это, только если вы ожидаете большое количество подключений за короткий промежуток времени.
back_log=80

# Если установлено ненулевое значение, все таблицы закрываются каждые flush_time секунд для высвобождения ресурсов и
# синхронизировать несохраненные данные на диск.
# Эту опцию лучше всего использовать только в системах с минимальными ресурсами.
флеш_время = 0

# Минимальный размер буфера, который используется для сканирования простого индекса, сканирования индекса диапазона и соединений, которые не используют
# индексирует и, таким образом, выполняет полное сканирование таблицы.
join_buffer_size=256K

# Максимальный размер одного пакета или любой сгенерированной или промежуточной строки, или любого параметра, отправленного
# mysql_stmt_send_long_data() Функция C API.
max_allowed_packet=4M

# Если несколько последовательных запросов на подключение от хоста прерываются без успешного подключения,
# сервер блокирует этот хост от выполнения дальнейших подключений.
max_connect_errors=100

# Изменяет количество файловых дескрипторов, доступных для mysqld.
# Вам следует попробовать увеличить значение этой опции, если mysqld выдает ошибку "Слишком много открытых файлов".
open_files_limit=4161

# Если вы видите много sort_merge_passes в секунду в выводе SHOW GLOBAL STATUS, вы можете рассмотреть возможность увеличения
# значение sort_buffer_size для ускорения операций ORDER BY или GROUP BY, которые нельзя улучшить с помощью оптимизации запросов
# или улучшенная индексация.
sort_buffer_size = 256 КБ

# Количество определений таблиц (из файлов .frm), которые можно сохранить в кэше определений.
# Если вы используете большое количество таблиц, вы можете создать кэш определений больших таблиц, чтобы ускорить открытие таблиц.
# Кэш определения таблицы занимает меньше места и не использует файловые дескрипторы, в отличие от обычного кэша таблиц.
# Минимальное значение и значение по умолчанию равно 400.
table_definition_cache=1400

# Укажите максимальный размер двоичного события журнала на основе строк в байтах.
# Строки группируются в события меньшего размера, если это возможно. Значение должно быть кратно 256.
binlog_row_event_max_size=8K

# Если значение этой переменной больше 0, подчиненное устройство репликации синхронизирует свой файл master.info с диском.
# (используя fdatasync()) после каждого события sync_master_info.
sync_master_info=10000

# Если значение этой переменной больше 0, сервер MySQL синхронизирует свой журнал ретрансляции с диском.
# (используя fdatasync()) после каждой записи sync_relay_log в журнал реле.
sync_relay_log=10000

# Если значение этой переменной больше 0, подчиненное устройство репликации синхронизирует свой файл relay-log.info с диском.
# (используя fdatasync()) после каждой транзакции sync_relay_log_info.
sync_relay_log_info=10000

# Загрузить плагины mysql при запуске."plugin_x ; plugin_y".
# plugin_load=

# Порт TCP/IP, который будет прослушивать протокол MySQL Server X.
# свободный_mysqlx_port=33060

# Размер буфера ключей, используемого для кэширования индексных блоков для таблиц MyISAM.
# Не устанавливайте его больше, чем 30% доступной памяти, так как часть памяти
# также требуется ОС для кэширования строк. Даже если вы не используете
# Таблицы MyISAM, вы все равно должны установить его на 8-64M, так как он также будет
# используется для внутренних временных дисковых таблиц.

Как мне улучшить производительность MySQL и предотвратить сбой сервера, ограничив использование ЦП?

Рейтинг:1
флаг ua

Нет очевидного объяснения в ПЕРЕМЕННЫХ и СТАТУСЕ.

Анализ ГЛОБАЛЬНОГО СТАТУСА и ПЕРЕМЕННЫХ:

Наблюдения:

  • Версия: 8.0.20
  • 60 ГБ оперативной памяти
  • Время работы = 04:49:11; некоторые значения GLOBAL STATUS могут быть еще не значимыми.
  • Вы работаете в Windows.
  • 4,89 запросов/сек : 3,43 вопроса/сек

Более важные вопросы:

Почти ничего не происходит. Мне трудно представить, что MySQL вызвал сбой.

Ниже max_connections до 500. (С момента запуска не было более 23 одновременных подключений.)

tmp_table_size = 500M — в настоящее время это опасно много для имеющегося у вас объема оперативной памяти.

innodb_doublewrite = ВКЛ.

Подробности и другие наблюдения:

( innodb_lru_scan_depth * innodb_page_cleaners ) = 1024 * 4 = 4096 -- Объем работы по очистке страниц каждую секунду. -- "InnoDB: page_cleaner: запланированный цикл занял 1000 мс..." можно исправить, уменьшив lru_scan_depth: рассмотрим 1000 / innodb_page_cleaners (сейчас 4). Также проверьте обмен.

(innodb_lru_scan_depth) = 1024 -- "InnoDB: page_cleaner: запланированный цикл занял 1000 мс..." можно исправить, уменьшив lru_scan_depth

( Innodb_buffer_pool_pages_free * 16384 / innodb_buffer_pool_size ) = 2 478 311 * 16384 / 38912M = 99,5% -- буферный пул свободен -- buffer_pool_size больше рабочего набора; может уменьшить его

(innodb_io_capacity) = 200 -- При сбросе используйте это количество операций ввода-вывода. -- Чтение может быть вялым или скачкообразным.

( Innodb_buffer_pool_pages_free / Innodb_buffer_pool_pages_total ) = 2 478 311 / 2490368 = 99,5% -- Часть buffer_pool в настоящее время не используется -- innodb_buffer_pool_size (сейчас 40802189312) больше необходимого?

( innodb_io_capacity_max / innodb_io_capacity ) = 2000 / 200 = 10 -- Вместимость: макс./обычная -- Рекомендую 2. Максимальное количество операций ввода-вывода должно быть примерно равно количеству операций ввода-вывода, которое может обрабатывать ваша подсистема ввода-вывода. (Если тип диска неизвестен, разумной парой может быть 2000/200.)

( Innodb_buffer_pool_bytes_data / innodb_buffer_pool_size ) = 196 214 784 / 38912M = 0,48% -- Процент буферного пула, занятого данными -- Небольшой процент май указывают, что buffer_pool излишне велик.

( innodb_doublewrite ) = innodb_doublewrite = ВЫКЛ. -- Дополнительный ввод-вывод, но дополнительная безопасность при аварии. -- OFF подходит для FusionIO, Galera, Replicas, ZFS.

(Innodb_os_log_writing/(Uptime/3600)/innodb_log_files_in_group/innodb_log_file_size) = 3 944 448/(17351/3600)/2/48M = 0,00813 -- Соотношение -- (см. протокол)

(Время работы / 60 * innodb_log_file_size / Innodb_os_log_writing) = 17 351 / 60 * 48M / 3944448 = 3690 -- Минуты между ротациями журналов InnoDB. Начиная с 5.6.8, это можно изменить динамически; не забудьте также изменить my.cnf. -- (Рекомендация 60 минут между ротациями несколько произвольна.) Отрегулируйте innodb_log_file_size (теперь 50331648). (Невозможно изменить в AWS.)

( innodb_flush_method ) = innodb_flush_method = небуферизованный -- Как InnoDB должен запрашивать у ОС запись блоков. Предложите O_DIRECT или O_ALL_DIRECT (Percona), чтобы избежать двойной буферизации. (По крайней мере, для Unix.) См. chrischandler для предупреждения об O_ALL_DIRECT.

(innodb_io_capacity) = 200 -- Количество операций ввода-вывода в секунду на диске . 100 для медленных дисков; 200 для вращающихся дисков; 1000-2000 для твердотельных накопителей; умножьте на коэффициент RAID.

( innodb_adaptive_hash_index ) = innodb_adaptive_hash_index = ON -- Обычно должен быть включен. -- Есть случаи, когда OFF лучше. См. также innodb_adaptive_hash_index_parts (теперь 8) (после 5.7.9) и innodb_adaptive_hash_index_partitions (MariaDB и Percona). ON был причастен к редким сбоям (ошибка 73890). 10.5.0 решил по умолчанию ВЫКЛ.

( innodb_print_all_deadlocks ) = innodb_print_all_deadlocks = ВЫКЛ. -- Регистрировать ли все взаимоблокировки. -- Если вас мучают взаимоблокировки, включите это. Предупреждение: Если у вас много взаимоблокировок, это может привести к записи большого количества данных на диск.

( max_connections ) = 2000 -- Максимальное количество соединений (потоков). Влияет на различные распределения. -- Если max_connections (сейчас 2000) слишком велико, а различные параметры памяти высоки, у вас может не хватить ОЗУ.

(bulk_insert_buffer_size) = 8/61440M = 0,01% -- Буфер для многострочных операций INSERT и LOAD DATA -- Слишком большой может угрожать размеру оперативной памяти. Слишком маленький может помешать таким операциям.

(tmp_table_size) = 4096M -- Ограничение на размер ПАМЯТЬ временные таблицы, используемые для поддержки SELECT -- Уменьшите tmp_table_size (теперь 4294967296), чтобы избежать нехватки оперативной памяти. Возможно не более 64М.

( Select_full_join / Com_select ) = 15 198 / 31082 = 48,9% -- % выборок, которые являются безиндексными соединениями -- Добавьте подходящие индексы к таблицам, используемым в JOIN.

( Com_admin_commands / Запросы ) = 25 348 / 84808 = 29,9% -- Процент запросов, являющихся командами администратора. -- В чем дело?

(длинное_время_запроса) = 10 -- Cutoff (Seconds) для определения "медленного" запроса. -- Предложить 2

( log_slow_slave_statements ) = log_slow_slave_statements = ВЫКЛ. -- (5.6.11, 5.7.1) По умолчанию реплицированные операторы не отображаются в медленном журнале; это заставляет их показывать. -- В медленном журнале может быть полезно увидеть записи, которые могут мешать чтению реплики.

(бэк_лог) = 80 -- (автоматический размер с версии 5.6.6; на основе max_connections) -- Повышение до min(150, max_connections (сейчас 2000)) может помочь при большом количестве подключений.

( Max_used_connections / max_connections ) = 23 / 2000 = 1,1% -- Пиковый % подключений -- Так как несколько коэффициентов памяти могут расширяться на основе max_connections (сейчас 2000), лучше не устанавливать слишком высокое значение этого параметра.

( Com_change_db / Соединения ) = 25 413 / 311 = 81,7 -- Переключение базы данных на соединение -- (второстепенное) Рассмотрите возможность использования синтаксиса "db.table"

( Прерванные_соединения / Соединения ) = 227 / 311 = 73,0% -- Возможно, хакер пытается взломать? (Попытки подключения)

Аномально маленький:

10 * read_buffer_size = 0,6 МБ
Com_insert = 4,4/час
Handler_read_next = 16 /сек
Innodb_buffer_pool_reads * innodb_page_size / innodb_buffer_pool_size = 0,47%
Innodb_dblwr_pages_writing = 0
Innodb_rows_updated = 0,62/час
back_log/max_connections = 4,0%
innodb_doublewrite_files = 0
innodb_doublewrite_pages = 0

Аномально большой:

Com_create_db = 0,21/час
Com_create_table = 92/час
Com_show_charsets = 1,7/ч
Com_show_plugins = 0,41/час
Com_show_storage_engines = 0,41/час
Innodb_buffer_pool_pages_free = 2,48e+6
Innodb_system_rows_deleted = 0,1/сек
Innodb_system_rows_inserted = 0,1/сек.
Innodb_system_rows_updated = 0,32/сек.
SSL_accepts = 304
SSL_default_timeout = 7200
SSL_finished_accepts = 304
SSL_session_cache_hits = 290
SSL_session_cache_timeouts = 5
SSL_verify_depth = 4,29e+9
SSL_verify_mode = 5
gtid_executed_compression_period = 0,058/сек
innodb_thread_concurrency = 21
max_error_count = 1024
max_length_for_sort_data = 4096
оптимизатор_trace_offset = --1
performance_schema_max_cond_classes = 100
performance_schema_max_mutex_classes = 300
performance_schema_max_rwlock_classes = 60
performance_schema_max_stage_classes = 175
performance_schema_max_statement_classes = 218
performance_schema_max_thread_classes = 100

Нестандартные строки:

event_scheduler = ВКЛ.
ft_boolean_syntax = + -><()~*:\"\"&
have_query_cache = НЕТ
innodb_fast_shutdown = 1
innodb_temp_tablespaces_dir = .\#innodb_temp\
lower_case_file_system = ВКЛ.
нижний_case_table_names = 1
mysqlx_compression_algorithms = DEFLATE_STREAM,LZ4_MESSAGE,ZSTD_STREAM
optimizer_trace = enabled=off,one_line=off
optimizer_trace_features = greedy_search=on, range_optimizer=on, dynamic_range=on, Repeat_subselect=on
protocol_compression_algorithms = zlib, zstd, несжатый
slave_rows_search_algorithms = INDEX_SCAN,HASH_SCAN

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

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