Александр Мутовин
15.10.2019
2221

Диагностика производительности MySQL баз данных.

Бывают ситуации, когда при большом размере базы данных не оптимизированные запросы выполняются довольно долго, а также забирают значительную часть ресурсов, что приводит к низкой производительности всего сервера. В этой статье мы рассмотрим утилиту mytop, которая представляет из себя инструмент командной строки для мониторинга работы MySQL сервера. Для начала произведем установку утилиты командой: Если после выполнения […]

Производительность MySQL баз данных

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

В этой статье мы рассмотрим утилиту mytop, которая представляет из себя инструмент командной строки для мониторинга работы MySQL сервера.

Все действия будут производиться на операционной системе Centos7.

Для начала произведем установку утилиты командой:

# yum install mytop

Если после выполнения данной команды вы увидите сообщение «No package mytop available» — это говорит о том, что в существующих репозиториях пакет небыл найден. Необходимо установить репозиторий «Epel»

# yum install epel-release
Не пакета mytop
Не пакета mytop

В момент успешной установки вы увидите слудющую информацию как на скриншоте

Установка необходимых пакетов
Установка необходимых пакетов
После установки выполним команду

 mytop –u root –p<PASSWORD>

Перед нами откроется интерфейс утилиты.

Указываем логин и пароль от пользователя MySQL
Интерфейс утилиты mytop
Интерфейс утилиты mytop

Разберем подробно все показатели в интерфейсе. Экран разбит на 2 части. Верхние 4 строчки содержат сводную информацию о сервере MySQL.

Первая строка говорит о том, что сервер установлен на локальном хосте, его версия 5.5.56- MariaDB. Справа показана информация о том, как долго запущен сервер.

Вторая строчка показывает общее количество запросов к базе данных, а также какое количество из них медленные. Параметр Se/In/Up/De(%): 61/19/00/04 показывает в процентном соотношении запросы выборки, вставки, обновления и удаления.

На третьей строчке мы видим сколько запросов получает сервер в данный момент времени, а также сколько из них медленные, за которыми следуют приоритеты запросов (как в предыдущей строке).

И четвертая строка отображает эффективность буфера ключей (как часто ключи считываются с буфера, а не с диска) и количество информации, которое MySQL отправил и получил как за все время, так и за текущий момент времени.

Вторая часть экрана отображает стоить потоков, сколько может поместиться на экране. По умолчанию они сортируются по времени простоя (сначала меньше всего простоя).

Разберем его параметры:

  1. Id  — пользователя
  2. User – имя пользователя
  3. Host/ip – откуда подключается пользователь
  4. DB – база данных, к которой обращается пользователь.
  5. Time – количество секунд простоя
  6. CMD – команда запроса
  7. Статус команды

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

Если в данный момент идет выполнение запроса, то поток приобретает желтый цвет.

Если потов находится в спящем режиме, то он отображается белым цветом.

Если происходит подключение, то поток отображается зеленым цветом.

Вместо того, чтобы набирать  длинные строки командной строки, можно использовать файл конфигурации в домашнем каталоге. Называться он должен «.mytop»

Файл конфигурации mytop
Файл конфигурации mytop

При использовании файла конфигурации достаточно в консоли написать «mytop» без параметров и утилита откроется с заранее заданными параметрами.

Путь к файлу конфигурации нигде указывать не нужно,  если файл существует, то он будет автоматически прочитан.

Разберем подробно каждый параметр:

  1. User – имя пользователя MySQL
  2. Pass – пароль пользователя
  3. Host – хост где установлена база данных
  4. Db – база данных, которую необходимо мониторить (если ничего не указывать, то будут мониториться все)
  5. Delay – c какой периодичностью обновлять информацию на экране
  6. Port— порт для подключения к базе данных.
  7. Socket – сокет
  8. Batchmode – запуск без обновления экрана (по умолчанию выключен)
  9. Header – показывать или скрывать заголовок
header установлен в режим «o» заголовок не показывается
header установлен в режим «o» заголовок не показывается

    10. color – отображать разными цветами процессы или нет.

На данном скриншоте color принимает значение «0» разные цвета не            применяются.
На данном скриншоте color принимает значение «0» разные цвета не            применяются.

    11. idle – отображать или нет спящие процессы

На скриншоте параметр idle установлен в в значение «0». Спящие процессы не отображаются.
На скриншоте параметр idle установлен в в значение «0». Спящие процессы не отображаются.

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

Меню Help
Меню Help

В стандартном выводе mytop запросы сокращены, для полного вывода запроса необходимо нажать букву «e»

Для примера запустим сложный запрос, который будет продолжительное время выполняться и запустим mytop

 Запуск сложного запроса
Запуск сложного запроса

Как мы видим из скриншота данный запрос выполняется довольно долго. Для вывода подробной информации нажмем букву «e». После чего утилита попросит ввести id нужного запроса.

Вывод подробной информации о нужном запросе.
Вывод подробной информации о нужном запросе.

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

Чтобы отобразить только запрос нажмите букву «f» после чего введите id запроса.

Данный запрос грузит процессор на 100%

Загрузка процессора на 100%
Загрузка процессора на 100%

Для быстрой остановки процесса в утилите mytop можно воспользоваться ключом «k»

Данные у нас хранятся за последние 4 года, попробуем удалить часть информации из базы данных и проверим скорость выполнения запроса.

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

Также в утилите есть ключ «u», с помощью которого вывод запросов можно отфильтровать по полю «user»

Использование ключа «u»
Использование ключа «u»

Утилита спросит, по какому пользователю необходимо отсортировать. Введем «freepbxuser»

Также параметр можно задать в виде регулярного выражения
Отсортированный список
Отсортированный список
Мы рассмотрели базовые возможности утилиты mytop. Также имеются дополнительные параметры и ключи. Их можно посмотреть выполнив команду

#man mytop

Подписаться
Уведомление о
guest
0 Комментарий
Inline Feedbacks
View all comments

Остались вопросы?

Я - Кондрашин Игорь, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование

ближайшие курсы

ближайшие Вебинары

ONLINE

10 доводов в пользу Asterisk

Распространяется бесплатно.

Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.

Безопасен в использовании.

Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.

Надежен в эксплуатации.

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

Гибкий в настройке.

Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.

Имеет огромный функционал.

Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.

Интегрируется с любыми системами.

То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.

Позволяет телефонизировать офис за считанные часы.

В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.

Отличная масштабируемость.

Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.

Повышает управляемость бизнеса.

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

Снижает расходы на связь.

Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.