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

Какой пользователь загружает процессор сервера базы данных MySQL?

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

Это можно сделать с помощью довольно простых SHOW PROCESSLIST; из MySQL CLI в качестве администратора MySQL.

Если есть процесс, который нужно остановить, простой KILL <query Id>; должен позаботиться об этом.

В этом блоке разработчика ничего не происходит, но это пример того, что вы увидите на выходе:

mysql> show processlist;
+----+------+-----------+--------+---------+------+-------+------------------+
| Id | User | Host      | db     | Command | Time | State | Info             |
+----+------+-----------+--------+---------+------+-------+------------------+
|  7 | root | localhost | wikidb | Query   |    0 | NULL  | show processlist |
+----+------+-----------+--------+---------+------+-------+------------------+

Как видите, он отображает полезную информацию о базе данных, в которой выполняется запрос, времени выполнения, статусе запроса и содержимом запроса.

Я согласен с ответами @Michael Hampton и @ Adrian, но хотел бы добавить свое собственное предложение - попробуйте войти на сервер и запустить следующее:

[~]# watch mysqladmin pr

Это должно предоставить вам базы данных, к которым осуществляется доступ, и выполняемые запросы, а добавление «watch» будет отслеживать и обновлять список. Если какая-либо база данных перегружает сервер, вы можете попробовать запустить следующее:

service mysql stop

myisamchk -r /var/lib/mysql/dbname/*.MYI

service mysql start

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

Еще одно хорошее предложение - включить журналы запросов / установить низкое время медленного запроса и максимально использовать их / использовать такой инструмент, как percona-toolkit разобрать их.

Мы лично используем MariaDB сборка MySQL, имеющая userstats применен патч, который изменяет information_schema для включения полезных данных, таких как используемое время ЦП, время занятости и т. д.

Пример:

+------------------+----------+-----------+--------------+--------------+
| USER             | CPU_TIME | BUSY_TIME | ROWS_FETCHED | ROWS_UPDATED |
+------------------+----------+-----------+--------------+--------------+
| xxx_agaipdf |   208850 |    219735 |    372405321 |       950924 |
| xxx_pdfseus |   179626 |    196981 |    145208779 |       771474 |
| xxx_gopdf   |   177303 |    191366 |    323861619 |       653246 |
| xxx_nextuse |   140624 |    153672 |     37374285 |       425618 |
| xxx_gospel  |   135814 |    142874 |     65301676 |       491579 |
+------------------+----------+-----------+--------------+--------------+