FastNetMon

Tuesday, 1 December 2009

Диагностика нагрузки на MySQL: включение slow-query-log

Часто для определения узких мест в MySQL очень интересно узнать, какие именно запросы оказываются для сервера самыми "тяжелыми" (да, конечно, может быть много мелких запросов, которые грузят сервер, такой случай намного сложнее, но также вполне решаем - кому интересно решение для Центос - в комменты). Для этого у MySQL есть отличный механизм slow query log, куда падают все медленные запросы.


Активируется так:
vi /etc/my.cnf


В блок [mysql] добавляем следующее:
# логгируем запросы длиннее 5 секунд
long_query_time = 10
log-slow-queries = /var/log/mysqld-slow-query.log
# логгируем запросы, не использующие индексы
log-queries-not-using-indexes


Перезапускаем MySQL:
/etc/init.d/mysqld restart

После этого должен быть автоматически создан файл для лога:
ls -al /var/log/mysql | grep slow
-rw-rw---- 1 mysql adm 47K 2011-07-13 19:54 mysql-slow.log

12 comments :

  1. Еще есть очень полезная утилита mysqldumpslow для анализа лога медленных запросов.

    ReplyDelete
  2. Спасибо, посмотрю.

    ReplyDelete
  3. Автор ты некомпетентен, что за чушь ты тут написал?
    Чтобы логгировать запросы больше 5 секунд, нужно ставить long_query_time = 5, а не как у тебя long_query_time = 10. И ВТОРОЕ, эти настройки нужно вставлять в блок [mysqld], а не [mysql].

    ReplyDelete
    Replies
    1. Дурак ты и не лечишься

      Delete
    2. Все верно! letgo

      Delete
  4. letgo, некомпететность в каком-либо вопросе всяко более меньший грех чем хамство.

    Это проверенное решение, а текст в комментариях исправил бы любой комптентный администратор.

    ReplyDelete
  5. Есть более полезная штука. Используйте http://wm-tools.net/mysql для диагностики, анализа и советов по оптимизации mysql.
    Ссылка: Оптимизация MySQL

    ReplyDelete
    Replies
    1. да, конечно, на боевом сервере желательно!!! с правами root))

      Delete
    2. Был опыт, что подропало базы? :)

      Delete
    3. Вот интересно, какой здоровый человек будет давать рута от своей базы?! Это что, сервис для сбора паролей, емейлов и хешей и хакеров из школы номер 114?

      Delete
  6. Рут можно не давать, достаточно обычного юзера.
    Рут никто не мешает дать на минуту, а затем сменить пароль (временно).
    Да и делаться это все должно для dev-сервера.

    Но кому что ближе, кому оптимизация, а кому и паранойя ;)

    ReplyDelete
  7. Нужно еще добавить slow_query_log = 1

    ReplyDelete

Note: only a member of this blog may post a comment.