Показать MySQL процессы в Unix/Linux

Показать MySQL процессы в Unix/Linux

Завалялась у меня в черновиках очередная заметка «Показать MySQL процессы в Unix/Linux». В ней я расскажу как работать с MySQL процессами в Unix/Linux.

Показать ВСЕ MySQL процессы в Unix/Linux

Чтобы посмотреть список процессов, используйте:

> SHOW PROCESSLIST;

Чтобы посмотреть полный список процессов, используйте команду:

 > SHOW FULL PROCESSLIST;

Так же, можно данный вывод перенаправить в файл для дальнейшего использования:

# mysql -e "show full processlist\G" > /root/processlist.txt

Очень удобно использовать еще сторонние утилиты в сочетании «show full processlist».

Чтобы посчитать количество всех соединений используйте:

# mysql -e "show full processlist\G"| grep -E "Command:"| wc -l

Или показать количество слипов:

# mysql -e "show full processlist\G"| grep -E "Command:"|grep -i "sleep"| wc -l

Или количество соединений без слипов:

# mysql -e "show full processlist\G"| grep -E "Command:"|grep -iv "sleep"| wc -l

Как то так 🙂

Показать MySQL процессы без sleep соединений в Unix/Linux

К сожалению, SHOW PROCESSLIST не позволяет использовать фильтры. По этому, можно сделать «ход конем», следующая команда покажет все соединения без sleep-ов:

> SELECT * FROM information_schema.processlist WHERE command != 'Sleep' ORDER BY id;

Вот еще один вариант:

> SELECT user, time, state, info FROM information_schema.processlist WHERE command != 'Sleep' ORDER BY time DESC, id;

Посмотрим соединения которые занимают некоторое время, например меньше 2 секунд:

> SELECT user, time, state, info FROM information_schema.processlist WHERE command != 'Sleep' AND time >= 2 ORDER BY time DESC, id;

Подсказка:
При больших данных лучше всего использовать вертикальный вывод, и для этого служит «\G» опция в конце строки, за место символа «;», вот пример:

> SELECT user, time, state, info FROM information_schema.processlist WHERE command != 'Sleep' AND time >= 2 ORDER BY time DESC, id \G

Существует альтернатива, чтобы скрыть все Sleep процессы в MYSQL PROCESSLIST:

Если у вас есть много подключений к MySQL или MariaDB (как у меня) вы можете отфильтровать список, который вы видите при запуске SHOW PROCESSLIST. Чтобы скрыть все Sleep процессы, вы можете просто использовать grep:

\P grep -v "| Sleep"

Вот и все.

Показать MySQL процессы sleep соединения в Unix/Linux

К сожалению, SHOW PROCESSLIST не позволяет использовать фильтры. По этому, можно сделать «ход конем», следующая команда покажет все соединения без sleep-ов:

> SELECT * FROM information_schema.processlist WHERE command = 'Sleep' ORDER BY id;

Вот еще один вариант:

> SELECT user, time, state, info FROM information_schema.processlist WHERE command = 'Sleep' ORDER BY time DESC, id;

Посмотрим соединения которые занимают некоторое время, например меньше 2 секунд:

> SELECT user, time, state, info FROM information_schema.processlist WHERE command = 'Sleep' AND time >= 2 ORDER BY time DESC, id;

Подсказка:
При больших данных лучше всего использовать вертикальный вывод, и для этого служит «\G» опция в конце строки, за место символа «;», вот пример:

> SELECT user, time, state, info FROM information_schema.processlist WHERE command = 'Sleep' AND time >= 2 ORDER BY time DESC, id \G

Существует альтернатива, чтобы скрыть все Sleep процессы в MYSQL PROCESSLIST:

Если у вас есть много подключений к MySQL или MariaDB (как у меня) вы можете отфильтровать список, который вы видите при запуске SHOW PROCESSLIST. Чтобы скрыть все Sleep процессы, вы можете просто использовать grep:

\P grep "| Sleep"

Вот и все.

Работа с процессами MySQL в Unix/Linux

Мною был написан плагин для мониторинга sleep соединений через Nagios:

Плагин для мониторинга sleep соединений в mysql для Nagios

Обычно их не нужно мониторить, а нужно сбрасывать по заданной переменной или завершать:

Завершить все sleep соединения в MySQL

Тема «Показать MySQL процессы в Unix/Linux» завершена.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.