Linux虚拟机进程卡顿,核心排查路径是“先看负载,再看CPU,然后查内存和磁盘IO”,按这个顺序定位,绝大多数卡顿都能在几分钟内找到根因。
linux虚拟机卡顿怎么排查
虚拟机卡顿和物理机卡顿的排查思路不完全一样,物理机卡顿可能是硬件故障,虚拟机卡顿除了自身资源瓶颈,还要考虑宿主机资源争抢,但先说一句实在话:大部分Linux虚拟机卡顿,问题都出在CPU等待、内存交换和磁盘IO这三件事上,先把这三样查清楚,再谈别的。
第一步:看系统整体负载
登录虚拟机后,第一个命令必须是uptime,这个命令会输出三个关键数字:1分钟、5分钟、15分钟的平均负载。
uptime
输出类似:load average: 4.52, 3.87, 2.91
怎么判断负载是不是正常?主要看CPU核数,如果你的虚拟机是2核CPU,那负载超过2.0就已经在超负荷运转了,如果负载是4.52,而虚拟机只有2核,说明任务排队严重,系统已经在“硬撑”了。
但这里有个坑:负载高不等于CPU忙,负载是“正在运行的进程数+不可中断睡眠的进程数”,不可中断睡眠通常意味着进程在等磁盘IO,所以如果负载飙高,下一步要分清楚是CPU跑满了还是IO卡住了。
第二步:分清CPU忙还是IO等
这一步直接用vmstat,一秒采样一次,连续跑三到五次:
vmstat 1 5
重点看三列:
- r:就绪队列长度,持续大于CPU核数就意味着CPU不够用
- b:阻塞进程数,数值大说明进程在等IO
- wa:IO等待占比,持续高于30%基本可以断定磁盘是瓶颈
举个例子:如果r是5,b是0,wa是1%,那问题就是CPU算力不够;如果r是1,b是3,wa是45%,那基本是磁盘IO在拖后腿。
第三步:定位具体进程
系统层面的症状看清了,接下来要找到“罪魁祸首”,一条命令搞定:
top -c
进入top界面后,按P键按CPU排序,按M键按内存排序,重点看两列:%CPU和%MEM。
这里有一个实操小技巧:按1展开所有CPU核心,如果只有某个核跑满而其他核空闲,可能是单线程程序或绑核问题;如果所有核都跑满,那就是真·CPU资源耗尽。

虚拟机cpu占用率高怎么解决
找到高CPU进程后,不要急着kill -9,先问自己三个问题:这个进程该不该跑?现在跑的是不是异常状态?能不能降优先级?
如何判断进程是否异常
看进程名反推业务:如果nginx或java占用高,结合业务流量判断是否正常;如果是一个不认识的进程名,比如一串随机字符,直接查看它的启动路径和启动用户。
具体命令:
ls -l /proc/PID/exe cat /proc/PID/cmdline | tr '