mysql占用CPU一直在200%左右 怎么查是哪个占用的

如题所述

可以先使用 uptime 命令查看 CPU 平均负载

那个 2 users 表示用户连接数,指的是总连接数。

那个 load average 就是系统平均负载,1 分钟、5 分钟、15 分钟系统负载的平均值。

指的是一段时间内 CPU 正在处理以及等待 CPU 处理的进程数之和的统计信息,也就是 CPU 使用队列的长度的统计信息。这个数字越小越好。


然后再用 vmstat 命令看下 CPU 是否饱和

这里面的 r 就是等待 CPU 的进程数,可以用来判定 CPU 是否饱和,当 r 值高于 CPU 数时,就意味着饱和了。

最右边那个 us,sy,id,wa,st 表示所有 CPU 的使用百分比。它们分别是 user time,system time,idle,wait I/O 和 steal time 的缩写。将 us 和 sy 的百分比加和,可以确定 CPU 是否处于忙碌状态。


如果是多核的机器还可以使用 mpstat 命令查看是否均衡


与 CPU 相关的命令还有 pidstat

这个命令展示了 CPU 消耗在了哪些进程上面,消耗过大的进程需要格外关注下。


基本上你使用上述几个命令 就可以初步了解 CPU 出现了何种问题

有了猜测的方向之后 你就可以进一步深入去排查了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-07-05
方法:在使用鼠标右键点击文件或目录的时候先使用鼠标左键选择你的目标文件或目录。然后再使用鼠标右键弹出快捷菜单。
第2个回答  2016-07-05
mysql 是数据库本回答被提问者采纳
第3个回答  2020-12-03
先 找到 CPU 高的线程,如果 CPU 高的线程号一直在变,那可能不是单个 SQL 引起的 CPU 消耗,需要用其他方法来辅助分析。找到线程任务processlist 。
可以看到很多有用的信息:
1. 可以看到 processlist 中对应这根线程的信息
2. 可以找到其在 processlist 中的 ID,这样我们就可以下 kill 命令来结束 SQL
小贴士:
使用 performance_schema 时,需要大家注意 MySQL 使用了多个线程编号,源自于不同视角:
1. PROCESSLIST_ID:在 processlist 中的编号,是使用者视角的编号,使用者可以直接用 kill 命令。
2. THREAD_ID:是 MySQL 内部使用的线程编号,是 MySQL 内部视角的编号。
3. THREAD_OS_ID:是在操作系统上,对应的线程编号,是操作系统视角的编号。
大家使用时需要区分好,不要 kill 错了 SQL。
其他有用的信息,可以看到 SQL 执行的开始时间,正在使用了一张临时磁盘表。
如果开启了 performance_schema 的其他监控项,通过 Thread_ID 关联,可以找到更多信息。
当然,眼下这么明显的坑 SQL,我们 kill 掉就是了。
相似回答