Назад | Перейти на главную страницу

Как исследовать пиковую пропускную способность MySQL?

Недавно на одном из наших серверов закончилась память и произошел сбой. После просмотра munin графики, похоже, что единственным показателем (кроме использования памяти), достигшим пика непосредственно перед сбоем, был MySQL throughput. Однако мы ожидали увидеть соответствующее увеличение количества MySQL queries чего не произошло:

Также на графике ниже вы можете видеть, что MySQL throughput достигло аномально высокого значения, нигде не приближающегося к любому другому значению, достигнутому ранее:

Мы полностью в неведении относительно того, как нам следует действовать, отсюда и следующий вопрос:

Как провести «посмертное» исследование увеличения пропускной способности MySQL?

Запрос с огромным набором результатов вызовет такой всплеск, не увидев соответствующего увеличения количества запросов. Есть ли у вас мониторинг дискового ввода-вывода? Там тоже должен быть большой всплеск, если это было вызвано запросом.

К сожалению, патологоанатомическое исследование сложно без general_log включен. В журнале ошибок не отображаются успешно выполненные запросы.

Забегая вперед, то, что я сделал, чтобы попытаться выявить эти проблемы, - это сохранить окно журналов запросов. включить general_log и настройте logrotate, чтобы вести краткую историю запросов. Если это слишком затратно по производительности, вы также можете попробовать использовать такой инструмент, как mk-query-digest вместе с tcpdump для захвата запросов.