【问题标题】:find out what query is a process making knowing the PID of it找出什么查询是一个知道它的PID的进程
【发布时间】:2019-02-13 19:48:46
【问题描述】:

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

现在,我想做的是检查那个 PID 正在做什么查询?我的网站做了很多与数据库相关的事情,我想知道是什么工作导致了这种高 CPU 使用率。谁能给我指路?

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

【问题讨论】:

  • 请发布SHOW FULL PROCESSLIST的文本结果;所以我们可以看到你在看什么。谢谢

标签: mysql debugging cpu-usage


【解决方案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 加入,以了解哪个查询正在使用哪个操作系统 PID

【讨论】:

  • "这些是服务器线程,不是客户端线程" topicstarter 需要服务器线程@user207421 他正在谈论mysqld 所以这个方法是有效的。
【解决方案2】:

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

SELECT * FROM information_schema.innodb_trx;

?

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

【讨论】:

  • @nagedev207 您是否尝试过这种技术来查看正在运行的查询?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-11
  • 2011-11-30
  • 1970-01-01
  • 2023-03-20
  • 2016-05-08
  • 1970-01-01
  • 2012-02-27
相关资源
最近更新 更多