Оптимизация MySQL сервера. Часть 4. Признаки проблем с производительностью MySQL

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

Эта публикация сугубо мой конспект прочитанной литературы. Информация может быть не очень структурирована и удобочитаема. Материал публикации предоставляется без каких-либо гарантий со стороны автора.

Список первоисточников

  1. O’Reilly High Performance MySQL 3rd Edition.
  2. How to read Vmstat output.

Утилиты для выявления проблем в производительности.

vmstat

Пример запуска утилиты:

vmstat -S M 5

Первая строка в выводе показывает среднее значение с момента перезагрузки сервера. Последующие строки показывают текущую оперативные данные. Новая строчка с текущими значениями будет выводиться каждые 5 секунд.

В таблице ниже приведено краткое описание каждого из группы столбцов.

СтолбецОписание
procsСтолбец “r” показывает сколько процессов ожидают процессорного времени. Столбец “b” показывает сколько процессов находятся в режиме ожидания I/O (диск, сеть, пользовательский ввод и т.д.)
memoryСтолбец “swpd” показывает сколько блоков выгружено в файл подкачки на диск.
Столбец “free” показывает количество свободных блоков.
Столбец “buff” показывает количество блоков, используемых в качестве буферной памяти.
Столбец “cache” показывает количество блоков, которые используются в качестве кеша.
swapОтображает информацию о том, сколько блоков выгружено на диск (столбец “so”) или загружено с диска (столбец “si”) при использовании файла подкачки.
ioПоказывает сколько блоков в секунду было прочитано (столбец “bi”) с блочных устройств, а также сколько блоков было записано (столбец “bo”) на блочные устройства.
systemОтображает информацию и количестве прерываний (столбец “in”) и переключений контекста (столбец “cs”).
cpuПоказывает время распределения процессорного времени на контекст пользователя (us), ядра системы (sy), время простоя (id) и ожидания устройство ввода/вывода (wa). Если сервер виртуальный, то будет отображен пятый стобец (st), который показывает гипервизор распределил на что-то другое, отличное от нужно самого виртуального сервера

Как я уже говорил размер вывод для memory, swap, io отображается в блоках. Размер блока при использовании параметра -S M составляет 1 МБ. Без указания этого параметра размер блока будет составлять 1 КБ (1024 байт).

Не стоит беспокоиться о высоких значения в столбце “system – cs”. По крайне мере при значения до 100000. Но даже большие значения далко не всегда признак наличия проблем с ресурсом CPU.

iostat

Пример запуска утилиты:

iostat -dx 5

Первая строка в выводе показывает среднее значение с момента перезагрузки сервера. Последующие строки показывают текущую оперативные данные.

Краткое описание столбцов приведено в таблице ниже.

СтолбецОписаниеaqu-szСЗГ
rrqm/s и wrqm/sКоличество сгруппированных операций чтения и записи. Под группировкой понимается объединение нескольких логических запросов из очереди в единый запрос для отправки его на конечное устройство.
r/s и w/sКоличество операций чтения и записи в секунду.
rsec/s (rkB/
s) и wsec/s (wkB/s)
Скорость операций чтения и записи в секунду. В зависимости от ОС может отображаться либо в байтах, либо в килобайтах.
rareq-sz и wareq-szСредний размер запроса для чтения\записи.
aqu-sz (avgrq-sz)Средняя длина очереди.
r_await и w_awaitКоличество миллисекунд, потраченных на нахождение запроса в очереди.
%utilПроцент времени в течении которого хотя бы один запрос был активен. Не стоит путать этот параметр с процентом использования диска.

Примеры определения проблем с производительностью

Для справки привожу пример вывода утилиты vmstat с незагруженной ВМ с только что установленным серверов MySQL:

Проблемы с ресурсами CPU

Основной инструмент для идентификации проблем с ресурсами CPU – утилита vmstat. Высокое значение (90 и более) в столбце “cpu – us”. Также высокое значение в стоблце “cpu – sy” (более 20) свидетельствует о наличии недостатка ресурсов CPU.

Например:

Проблемы с подсистемой ввода/вывода

Если серверу приходится обслуживать много операций ввода-вывода, то при использовании утилиты iostat в столбцах “procs – b” должно быть далеко не нулевое значение. Хотя более однозначный признак – это далеко не нулевое значение в столбце “cpu – wa”:

При использовании утилиты iostat в таком случае можно будет наблюдать постоянную и полную загрузки дисковой подсистемы (%util):

Большое использование файла подкачки

Основной инструмент для диагностики – утилита vmststa. Если сервер очень сильно использует файл подкачки (swap), то в столбцах группы “swap” будут большие значения:

Ссылки на другие статьи этого цикла

Часть 1. Тестирование производительности MySQL.

Часть 2. Профилирование нагрузки сервера MySQL.

Часть 3. Базовая конфигурация и оптимизация настроек MySQL.

Часть 5. Полезные запросы для MySQL.

Часть 6. Нюансы настройки репликации MySQL.

Часть 7. Резервное копирование MySQL.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *