Mtop - мониторинг нагрузки на MySQL-сервер

  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:29dc13fd07b690762e321fd5b7327dcf' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtejustify\">При работе с <strong>MySQL</strong> довольно полезно следить за нагрузкой,&nbsp;которая ложится на <strong>MySQL</strong>-сервер.&nbsp;В портах есть полезная утилита - <strong>mtop</strong>. Она в режиме реального времени отслеживает и показывает текущие запросы к безе данных, время их выполнения, статус <strong>MySQL</strong>-сервера в удобной форме.</p>\n<p class=\"rtejustify\">Итак,&nbsp;выполним установку утилиты из системы портов:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td># <strong>cd /usr/ports/databases/mtop &amp;&amp; make install clean &amp;&amp; rehash</strong></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">По завершению установки создадим <strong>MySQL</strong>-пользователя, которому дадим права на просмотр процессов <strong>MySQL</strong>:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>mysql&gt; <strong>grant process on *.* to </strong><strong>\'mtop\'@\'localhost\'</strong><strong> identified by \'<span style=\"color: #ff0000\">mtop_passwd_here</span>\';<br />\n </strong>Query OK, 0 rows affected (0.11 sec)</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">На этом все &quot;приготовления&quot; можно считать законченными. Запустим <strong>mtop</strong> и посмотрим на результат. Параметри запуска следующие:</p>\n<p class=\"rtejustify\">\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td># <strong>mtop -dbu mtop -p <span style=\"color: #ff0000\">mtop_passwd_here</span></strong></td>\n</tr>\n</tbody>\n</table>\n</p>\n<p>Если не указывать ключ&nbsp;<strong>-dbu</strong>, то <strong>mtop</strong> будет пытаться подключаться от имени пользователя <strong>mysqltop</strong>.</p>\n<p class=\"rtejustify\">Теперь можно наблюдать за динамикой SQL-запросов. При этом быстрые запросы отображаются белым цветом и потом, по мере роста длительности выполнения цвет начинает меняться, если запрос выполняется более 10 секунд он окрашивается фиолетовым, более 20 секунд&nbsp;- желтым, более 40 секунд&nbsp;- красным. Это значения по умолчанию, но их можно переназначить.</p>\n<p class=\"rtejustify\">Утилита очень хорошо визуально демонстрирует проблемные места в работе <strong>MySQL</strong>. Так же очень хорошо видны такие показатели как число процессов (<strong>threads</strong>) и сколько из них активны (<strong>running</strong>), сколько процессов закешированны(<strong>cached</strong>), сколько запросов поступило и сколько из них медленных(<strong>Queries/slow</strong>) и какова эффективность кеша запросов (<strong>Cache Hit</strong>).</p>\n<p class=\"rtejustify\">Для того,&nbsp;чтобы узнать все возможности и ключи запуска&nbsp;утилиты - настоятельно рекомендую ознакомиться со страницей руководства.</p>\n<p class=\"rtejustify\">А чтобы ознакомиться с доступными ключами&nbsp;во время работы утилиты, необходимо нажать &quot;<strong>?</strong>&quot;. В результате получаем такую подсказку:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<pre>\nq - quit\n? - help; show this text\nf - flush status\nF - fold/unfold column names in select statement display\nk - kill processes; send a kill to a list of ids\ns - change the number of seconds to delay between updates\nm - toggle manual refresh mode on/off\nd - filter display with regular expression (user/host/db/command/state/info)\nh - display process for only one host\nu - display process for only one user\ni - toggle all/non-Sleeping process display\no - reverse the sort order\ne - explain a process; show query optimizer info\nt - show mysqld stats (show status/mysqladmin ext)\nT - show mysqld important stats\nv - show mysqld variables (show variables/mysqladmin vars)\nz - zoom in on a process, show sql statement detail\nr - show replication status for master/slaves</pre></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Думаю,&nbsp;что переводить нету смысла,&nbsp;и так все понятно. Ну и напоследок - скриншоты вывода утилиты <strong>mtop</strong>:</p>\n<p class=\"rtecenter\"><a class=\"thickbox\" href=\"http://muff.kiev.ua/files/imagepicker/1/mtop01.png\"><img class=\"imgp_img\" alt=\"Mtop\" width=\"200\" height=\"51\" src=\"http://muff.kiev.ua/files/imagepicker/1/thumbs/mtop01.png\" /></a></p>\n<p class=\"rtecenter\"><a class=\"thickbox\" href=\"http://muff.kiev.ua/files/imagepicker/1/mtop05.png\"><img class=\"imgp_img\" alt=\"MTOP\" width=\"200\" height=\"36\" src=\"http://muff.kiev.ua/files/imagepicker/1/thumbs/mtop05.png\" /></a></p>\n<p class=\"rtecenter\"><a class=\"thickbox\" href=\"http://muff.kiev.ua/files/imagepicker/1/mtop06.png\"><img class=\"imgp_img\" alt=\"MTOP\" width=\"200\" height=\"42\" src=\"http://muff.kiev.ua/files/imagepicker/1/thumbs/mtop06.png\" /></a></p>\n<p class=\"rtecenter\"><a class=\"thickbox\" href=\"http://muff.kiev.ua/files/imagepicker/1/mtop02.png\"><img class=\"imgp_img\" alt=\"MTOP\" width=\"200\" height=\"181\" src=\"http://muff.kiev.ua/files/imagepicker/1/thumbs/mtop02.png\" /></a></p>\n<p class=\"rtecenter\"><a class=\"thickbox\" href=\"http://muff.kiev.ua/files/imagepicker/1/mtop03.png\"><img class=\"imgp_img\" alt=\"MTOP\" width=\"200\" height=\"112\" src=\"http://muff.kiev.ua/files/imagepicker/1/thumbs/mtop03.png\" /></a></p>\n<p class=\"rtecenter\"><a class=\"thickbox\" href=\"http://muff.kiev.ua/files/imagepicker/1/mtop04.png\"><img class=\"imgp_img\" alt=\"MTOP\" width=\"200\" height=\"112\" src=\"http://muff.kiev.ua/files/imagepicker/1/thumbs/mtop04.png\" /></a></p>\n<p class=\"rtecenter\">&nbsp;</p>\n', created = 1767602765, expire = 1767689165, headers = '', serialized = 0 WHERE cid = '2:29dc13fd07b690762e321fd5b7327dcf' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:07243fc0252056071eaa62af8c18d662' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><a class=\"thickbox\" href=\"/files/imagepicker/1/wake_up_ua.png\"><img alt=\"Вставай, Україно!\" class=\"imgp_img\" src=\"/files/imagepicker/1/thumbs/wake_up_ua.png\" style=\"height:200px; width:150px\" /></a></p>\n', created = 1767602765, expire = 1767689165, headers = '', serialized = 0 WHERE cid = '2:07243fc0252056071eaa62af8c18d662' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:cc913d232116f0426090404133377d88' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:d9a86123bfcbc57878743027b584400b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><a href=\"http://muff.kiev.ua/rss.xml\"><img alt=\"RSS\" width=\"160\" height=\"60\" src=\"http://muff.kiev.ua/files/muf-rss.png\" /></a></p>\n', created = 1767602765, expire = 1767689165, headers = '', serialized = 0 WHERE cid = '2:d9a86123bfcbc57878743027b584400b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:39649256b636e3d5ded656bc52bd8c01' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
Версия для печатиОтправить другуPDF version

При работе с MySQL довольно полезно следить за нагрузкой, которая ложится на MySQL-сервер. В портах есть полезная утилита - mtop. Она в режиме реального времени отслеживает и показывает текущие запросы к безе данных, время их выполнения, статус MySQL-сервера в удобной форме.

Итак, выполним установку утилиты из системы портов:

# cd /usr/ports/databases/mtop && make install clean && rehash

По завершению установки создадим MySQL-пользователя, которому дадим права на просмотр процессов MySQL:

mysql> grant process on *.* to 'mtop'@'localhost' identified by 'mtop_passwd_here';
Query OK, 0 rows affected (0.11 sec)

На этом все "приготовления" можно считать законченными. Запустим mtop и посмотрим на результат. Параметри запуска следующие:

# mtop -dbu mtop -p mtop_passwd_here

Если не указывать ключ -dbu, то mtop будет пытаться подключаться от имени пользователя mysqltop.

Теперь можно наблюдать за динамикой SQL-запросов. При этом быстрые запросы отображаются белым цветом и потом, по мере роста длительности выполнения цвет начинает меняться, если запрос выполняется более 10 секунд он окрашивается фиолетовым, более 20 секунд - желтым, более 40 секунд - красным. Это значения по умолчанию, но их можно переназначить.

Утилита очень хорошо визуально демонстрирует проблемные места в работе MySQL. Так же очень хорошо видны такие показатели как число процессов (threads) и сколько из них активны (running), сколько процессов закешированны(cached), сколько запросов поступило и сколько из них медленных(Queries/slow) и какова эффективность кеша запросов (Cache Hit).

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

А чтобы ознакомиться с доступными ключами во время работы утилиты, необходимо нажать "?". В результате получаем такую подсказку:

q - quit
? - help; show this text
f - flush status
F - fold/unfold column names in select statement display
k - kill processes; send a kill to a list of ids
s - change the number of seconds to delay between updates
m - toggle manual refresh mode on/off
d - filter display with regular expression (user/host/db/command/state/info)
h - display process for only one host
u - display process for only one user
i - toggle all/non-Sleeping process display
o - reverse the sort order
e - explain a process; show query optimizer info
t - show mysqld stats (show status/mysqladmin ext)
T - show mysqld important stats
v - show mysqld variables (show variables/mysqladmin vars)
z - zoom in on a process, show sql statement detail
r - show replication status for master/slaves

Думаю, что переводить нету смысла, и так все понятно. Ну и напоследок - скриншоты вывода утилиты mtop:

Mtop

MTOP

MTOP

MTOP

MTOP

MTOP

 

Ваша оценка: Нет Средняя: 5 (3 голоса)

Вставай, Україно!

Литература

Девяносто девять процентов - это самое удачное место для разрыва соединения с сервером.