Мониторинг и отладка MySQL
Максимум информации при минимальных потерях
Света Смирнова
Техническая поддержка MySQL
19 июня 2015 года
Введение: конфликт желаний и
возможностей
Почему мониторинг - это дорого?
Как найти "золотое сечение"?
Включаем по требованию для решения
конкретной проблемы
Итоги
2 www.percona.com
Конфликт желаний и возможностей
3 www.percona.com
Желания
• При возникновении проблемы нам
нужно как можно больше информации
• Во всяком случае достаточно для
диагностики конкретного случая
• При этом сайт не должен замедлиться
ни на наносекунду
4 www.percona.com
Возможности
• Почти любой мониторинг - это дорого
• Стоит задуматься о
• Памяти
• Месте на диске
• Процессорном времени
• Всём сразу
5 www.percona.com
Тестируем
• Всё включено:
./mtr –start innodb –mysqld=–core-file
–mysqld=–general-log=1 –mysqld=–innodb-monitor-enable
–mysqld=–innodb-print-all-deadlocks –mysqld=–innodb-status-file=1
–mysqld=–innodb-status-output=1 –mysqld=–log-bin –mysqld=–slow-query-log
–mysqld=–log-warnings –mysqld=–performance-schema=1 –mysqld=–userstat=1
–mysqld=–thread-statistics=1
6 www.percona.com
Тестируем
• Выключено по максимуму:
./mtr –start innodb –mysqld=–general-log=0 –mysqld=–innodb-monitor-disable
–mysqld=–innodb-print-all-deadlocks=0 –mysqld=–innodb-status-file=0
–mysqld=–innodb-status-output=0 –mysqld=–slow-query-log=0
–mysqld=–performance-schema=0
–mysqld=–userstat=0 –mysqld=–thread-statistics=0
7 www.percona.com
Тестируем
• Percona-Server-5.6.24-rel72.2-
Linux.x86_64.ssl100
• Мой ноутбук
• Стандартный OLTP SysBench тест:
~/build/sysbench/bin/sysbench –mysql-user=root –mysql-host=127.0.0.1
–mysql-port=13001 –test=$HOME/src/sysbench/sysbench/tests/db/oltp.lua
–num-threads=8 –oltp-table-size=100000 prepare
for N in ‘echo 1 2 4 8 16‘; do
~/build/sysbench/bin/sysbench –mysql-user=root –mysql-host=127.0.0.1
–mysql-port=13001 –test=$HOME/src/sysbench/sysbench/tests/db/oltp.lua
–num-threads=$N –max-time=60 run;
done
8 www.percona.com
Иллюстрация
1 2 4 8 16
2,000
4,000
6,000
8,000
Threads
Events
Выключено
Включено
9 www.percona.com
Почему мониторинг - это дорого?
10 www.percona.com
Логи требуют дискового пространства
• General query log может занять всё
свободное место на диске
• Что делать в случае нагрузки в
40GB/час только на запись?
11 www.percona.com
Логи требуют дискового пространства
• General query log может занять всё
свободное место на диске
• Что делать в случае нагрузки в
40GB/час только на запись?
• Rotate policy
• Рекомендации из официального
руководства
• Rotating MySQL slow logs safely
11 www.percona.com
Память
• Performance Schema
• Требует выделенной памяти
• Память выделяется при старте и
занята даже если P_S не
используется - исправлено в 5.7!
• Размер таблиц history ограничен
• Information Schema
• Некоторые запросы используют
чересчур много памяти
• bug #72322 исправлен в 5.5.44,
5.6.25, 5.7.8, 5.8.0 - обновитесь!
12 www.percona.com
CPU usage
• Performance Schema
• Работает за счёт кода,
срабатываемого при каждом вызове
исследуемой функции
• То есть каждый анализируемый
участок кода вызывает срабатывание
ещё одного вызова
• Binary log
• В случае использования sync_binlog
добавляются дополнительные
вызовы fsync
13 www.percona.com
Сеть
• MySQL Proxy и другие proxy
• Дополнительный слой
14 www.percona.com
Внутренние блокировки
• SHOW SLAVE STATUS
• SHOW [GLOBAL] STATUS
• Производительность замедляется
при параллельном использовании
• Bug #42930 исправлен в 5.7.0:
готовьтесь обновиться!
• Information Schema
• Binary log
15 www.percona.com
Оптом
• Приложения с графическим
интерфейсом
• Как правило используют те же
инструменты
• STATUS VARIABLES
• MySQL и системные логи
• Performance Schema
• Имеют те же ограничения
16 www.percona.com
Как найти "золотое сечение"?
Нельзя вот так взять и запустить
mysqld без диагностики вообще!
17 www.percona.com
Начинаем с минимально неоходимого
• MySQL error log
• Log files операционной системы
18 www.percona.com
Кое-что можно включать по требованию
• General, slow query log файлы
• InnoDB Monitors
• Consumers в Performance Schema
• Performance Schema уже включена и
память выделена
• Data collection при помощи pt-stalk
• Переменные, статусы сервера и
InnoDB, processlist
• Системная диагностика
19 www.percona.com
Решаем конкретную проблему
20 www.percona.com
Динамически
• General query log
• Slow query log
• InnoDB Monitors
• Performance Schema instruments и
consumers
21 www.percona.com
Требуется перезапуск
• Error log
• Binary log
• Performance Schema
22 www.percona.com
В зависимости от задачи
• Оптимизация
• Запросов
• Приложения в целом
• Блокировки
• Крэши
• Неожиданное поведение
23 www.percona.com
Оптимизация запросов
• Slow query log
• pt-query-digest
• Таблицы в P_S: statements и stages
• Query Analyzer (QUAN) в MySQL
Enterprise Monitor (MEM)
• Percona Cloud Tools (PCT)
24 www.percona.com
Оптимизация приложения в целом
• InnoDB Monitors
• Performance Schema
• Сбор данных при необходимости
• Запущенные вручную SHOW и
SELECT ... FROM
INFORMATION_SCHEMA
• pt-stalk
• PCT
• MEM
25 www.percona.com
Блокировки
• P_S MDL tables
• InnoDB Monitors
• innodb_print_all_deadlocks
26 www.percona.com
Крэши
• Core dumps
• General query log
• Binary log
• Содержит только команды,
изменяющие данные
• Крэш может быть вызван и
SELECT-ом
27 www.percona.com
Неожиданное поведение
• General query log
• Binary log
• Только для непредвиденных данных
в базе
28 www.percona.com
Итоги
29 www.percona.com
Всегда включено
• MySQL error log
• Системные логи
30 www.percona.com
Включаем по требованию
• Performance Schema
• InnoDB Monitors
• General, slow, binary log
31 www.percona.com
Дополнительная информация
• mysqld-option-tables.html
• PCT(http://cloud.percona.com/)
• MySQL Enterprise Monitor
• Percona Toolkit
32 www.percona.com
Место для вопросов
???
33 www.percona.com
Спасибо!
http://www.slideshare.net/SvetaSmirnova
https://twitter.com/svetsmirnova
34 www.percona.com

Мониторинг и отладка MySQL: максимум информации при минимальных потерях

  • 1.
    Мониторинг и отладкаMySQL Максимум информации при минимальных потерях Света Смирнова Техническая поддержка MySQL 19 июня 2015 года
  • 2.
    Введение: конфликт желанийи возможностей Почему мониторинг - это дорого? Как найти "золотое сечение"? Включаем по требованию для решения конкретной проблемы Итоги 2 www.percona.com
  • 3.
    Конфликт желаний ивозможностей 3 www.percona.com
  • 4.
    Желания • При возникновениипроблемы нам нужно как можно больше информации • Во всяком случае достаточно для диагностики конкретного случая • При этом сайт не должен замедлиться ни на наносекунду 4 www.percona.com
  • 5.
    Возможности • Почти любоймониторинг - это дорого • Стоит задуматься о • Памяти • Месте на диске • Процессорном времени • Всём сразу 5 www.percona.com
  • 6.
    Тестируем • Всё включено: ./mtr–start innodb –mysqld=–core-file –mysqld=–general-log=1 –mysqld=–innodb-monitor-enable –mysqld=–innodb-print-all-deadlocks –mysqld=–innodb-status-file=1 –mysqld=–innodb-status-output=1 –mysqld=–log-bin –mysqld=–slow-query-log –mysqld=–log-warnings –mysqld=–performance-schema=1 –mysqld=–userstat=1 –mysqld=–thread-statistics=1 6 www.percona.com
  • 7.
    Тестируем • Выключено помаксимуму: ./mtr –start innodb –mysqld=–general-log=0 –mysqld=–innodb-monitor-disable –mysqld=–innodb-print-all-deadlocks=0 –mysqld=–innodb-status-file=0 –mysqld=–innodb-status-output=0 –mysqld=–slow-query-log=0 –mysqld=–performance-schema=0 –mysqld=–userstat=0 –mysqld=–thread-statistics=0 7 www.percona.com
  • 8.
    Тестируем • Percona-Server-5.6.24-rel72.2- Linux.x86_64.ssl100 • Мойноутбук • Стандартный OLTP SysBench тест: ~/build/sysbench/bin/sysbench –mysql-user=root –mysql-host=127.0.0.1 –mysql-port=13001 –test=$HOME/src/sysbench/sysbench/tests/db/oltp.lua –num-threads=8 –oltp-table-size=100000 prepare for N in ‘echo 1 2 4 8 16‘; do ~/build/sysbench/bin/sysbench –mysql-user=root –mysql-host=127.0.0.1 –mysql-port=13001 –test=$HOME/src/sysbench/sysbench/tests/db/oltp.lua –num-threads=$N –max-time=60 run; done 8 www.percona.com
  • 9.
    Иллюстрация 1 2 48 16 2,000 4,000 6,000 8,000 Threads Events Выключено Включено 9 www.percona.com
  • 10.
    Почему мониторинг -это дорого? 10 www.percona.com
  • 11.
    Логи требуют дисковогопространства • General query log может занять всё свободное место на диске • Что делать в случае нагрузки в 40GB/час только на запись? 11 www.percona.com
  • 12.
    Логи требуют дисковогопространства • General query log может занять всё свободное место на диске • Что делать в случае нагрузки в 40GB/час только на запись? • Rotate policy • Рекомендации из официального руководства • Rotating MySQL slow logs safely 11 www.percona.com
  • 13.
    Память • Performance Schema •Требует выделенной памяти • Память выделяется при старте и занята даже если P_S не используется - исправлено в 5.7! • Размер таблиц history ограничен • Information Schema • Некоторые запросы используют чересчур много памяти • bug #72322 исправлен в 5.5.44, 5.6.25, 5.7.8, 5.8.0 - обновитесь! 12 www.percona.com
  • 14.
    CPU usage • PerformanceSchema • Работает за счёт кода, срабатываемого при каждом вызове исследуемой функции • То есть каждый анализируемый участок кода вызывает срабатывание ещё одного вызова • Binary log • В случае использования sync_binlog добавляются дополнительные вызовы fsync 13 www.percona.com
  • 15.
    Сеть • MySQL Proxyи другие proxy • Дополнительный слой 14 www.percona.com
  • 16.
    Внутренние блокировки • SHOWSLAVE STATUS • SHOW [GLOBAL] STATUS • Производительность замедляется при параллельном использовании • Bug #42930 исправлен в 5.7.0: готовьтесь обновиться! • Information Schema • Binary log 15 www.percona.com
  • 17.
    Оптом • Приложения сграфическим интерфейсом • Как правило используют те же инструменты • STATUS VARIABLES • MySQL и системные логи • Performance Schema • Имеют те же ограничения 16 www.percona.com
  • 18.
    Как найти "золотоесечение"? Нельзя вот так взять и запустить mysqld без диагностики вообще! 17 www.percona.com
  • 19.
    Начинаем с минимальнонеоходимого • MySQL error log • Log files операционной системы 18 www.percona.com
  • 20.
    Кое-что можно включатьпо требованию • General, slow query log файлы • InnoDB Monitors • Consumers в Performance Schema • Performance Schema уже включена и память выделена • Data collection при помощи pt-stalk • Переменные, статусы сервера и InnoDB, processlist • Системная диагностика 19 www.percona.com
  • 21.
  • 22.
    Динамически • General querylog • Slow query log • InnoDB Monitors • Performance Schema instruments и consumers 21 www.percona.com
  • 23.
    Требуется перезапуск • Errorlog • Binary log • Performance Schema 22 www.percona.com
  • 24.
    В зависимости отзадачи • Оптимизация • Запросов • Приложения в целом • Блокировки • Крэши • Неожиданное поведение 23 www.percona.com
  • 25.
    Оптимизация запросов • Slowquery log • pt-query-digest • Таблицы в P_S: statements и stages • Query Analyzer (QUAN) в MySQL Enterprise Monitor (MEM) • Percona Cloud Tools (PCT) 24 www.percona.com
  • 26.
    Оптимизация приложения вцелом • InnoDB Monitors • Performance Schema • Сбор данных при необходимости • Запущенные вручную SHOW и SELECT ... FROM INFORMATION_SCHEMA • pt-stalk • PCT • MEM 25 www.percona.com
  • 27.
    Блокировки • P_S MDLtables • InnoDB Monitors • innodb_print_all_deadlocks 26 www.percona.com
  • 28.
    Крэши • Core dumps •General query log • Binary log • Содержит только команды, изменяющие данные • Крэш может быть вызван и SELECT-ом 27 www.percona.com
  • 29.
    Неожиданное поведение • Generalquery log • Binary log • Только для непредвиденных данных в базе 28 www.percona.com
  • 30.
  • 31.
    Всегда включено • MySQLerror log • Системные логи 30 www.percona.com
  • 32.
    Включаем по требованию •Performance Schema • InnoDB Monitors • General, slow, binary log 31 www.percona.com
  • 33.
    Дополнительная информация • mysqld-option-tables.html •PCT(http://cloud.percona.com/) • MySQL Enterprise Monitor • Percona Toolkit 32 www.percona.com
  • 34.
  • 35.