выяснить, какой запрос делает процесс, зная его PID - PullRequest
0 голосов
/ 13 февраля 2019

Используя команду htop, я вижу, что один процесс mysqld занимает более 500% загрузки ЦП, и его PID, например, 20456 htop только показать команду / usr / bin / mysqld рядом с ним

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

Я пытался показать полный список процессов в mysql, но он не показывает мне PID в этом списке, поэтому я не знаю, на чем сосредоточиться.

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Пытались ли вы войти в систему с правами суперпользователя при выполнении запроса -

SELECT * FROM information_schema.innodb_trx;

?

, чтобы просмотреть содержимое выполняющегося запроса (запросов)?

0 голосов
/ 13 февраля 2019

MySQL 5.7 / 8.0 швы, чтобы иметь встроенную поддержку для этого, когда я смотрю в руководство по просмотру потоков

THREAD_OS_ID

Идентификатор потока или задачикак определено базовой операционной системой, если она есть:

THREAD_OS_ID содержит идентификатор потока операционной системы.

Для Windows THREAD_OS_ID соответствует идентификатору потока, видимому в Process Explorer (https://technet.microsoft.com/en-us/sysinternals/bb896653.aspx).

Для Linux THREAD_OS_ID соответствует значению функции gettid (). Это значение предоставляется, например, с помощью команд perf или ps -L или в файловой системе proc (/ proc / [pid] / task / [tid]). Для получения дополнительной информации см. справочные страницы perf-stat (1), ps (1) и proc (5)

Кроме того, это представление также содержит PROCESSLIST_ID столбец, чтобы вы могли присоединиться к нему с information_schema.processlist , чтобы узнать, какой запрос использует какой PID ОС

...