找出查询是知道其PID的过程

时间:2019-02-13 19:48:46

标签: mysql debugging cpu-usage

通过使用htop命令,我可以看到一个mysqld进程占用了500%以上的CPU使用率,其PID例如是20456 htop仅在其旁边显示命令/ usr / bin / mysqld

现在,我想做的是检查PID在查询什么?我的网站做了很多与数据库有关的事情,我想知道是什么工作导致了如此高的CPU使用率。有人可以给我指路吗?

我尝试在mysql中显示完整的进程列表,但没有在列表中显示PID,所以我不知道要关注什么。

2 个答案:

答案 0 :(得分:1)

当我查看threads view manual

时,MySQL 5.7 / 8.0接缝对此具有原生支持
  

THREAD_OS_ID

     

由基础操作定义的线程或任务标识符   系统,如果有的话:

     

THREAD_OS_ID包含操作系统   线程ID。

     

对于Windows,THREAD_OS_ID对应于在   流程浏览器   (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联接起来,以了解哪个查询正在使用哪个OS PID。

答案 1 :(得分:0)

查询运行时,请尝试从root登录-

SELECT * FROM information_schema.innodb_trx;

?

查看正在运行的查询的内容?