В этой статье я законспектирую подходи с одним из наборов инструментов, который позволяет выявить признаки проблем с производительностью MySQL. Это дальеко не исчерпывающий перечень утилит, а лишь их малая часть, с которой я познакомился в ходе штудирования литературы.
Эта публикация сугубо мой конспект прочитанной литературы. Информация может быть не очень структурирована и удобочитаема. Материал публикации предоставляется без каких-либо гарантий со стороны автора.
Список первоисточников
- O’Reilly High Performance MySQL 3rd Edition.
- 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.