服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-10-14 更新于 2026-10-14 简米科技 3,655 字 9 分钟阅读

Linux虚拟机进程卡顿,如何高效排查优化?虚拟机卡顿怎么解决

导读Linux虚拟机进程卡顿,核心排查路径是“先看负载,再看CPU,然后查内存和磁盘IO”,按这个顺序定位,绝大多数卡顿都能在几分钟内找到根因,linux虚拟机卡顿怎么排查虚拟机卡顿和物理机卡顿的排查思路不完全一样,物理机卡顿可能是硬件故障,虚拟机卡顿除了自身资源瓶颈,还要考虑宿主机资源争抢,但先说一句实在话:大部……

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资源耗尽。

Linux虚拟机进程卡顿,如何高效排查优化?虚拟机卡顿怎么解决

虚拟机cpu占用率高怎么解决

找到高CPU进程后,不要急着kill -9,先问自己三个问题:这个进程该不该跑?现在跑的是不是异常状态?能不能降优先级?

如何判断进程是否异常

看进程名反推业务:如果nginx或java占用高,结合业务流量判断是否正常;如果是一个不认识的进程名,比如一串随机字符,直接查看它的启动路径和启动用户。

具体命令:

ls -l /proc/PID/exe
cat /proc/PID/cmdline | tr '' ' '

如果是挖矿病毒或异常脚本,立刻处理:先kill -STOP暂停进程,确认影响后再kill -KILL强杀,最后排查入侵来源。

正常业务进程CPU高怎么处理

如果确实是正常业务进程,比如数据库查询量大导致CPU高,有四个优化方向:

  • 调整进程优先级:用renice -n +10 PID降低非核心业务进程的优先级,保证关键业务先拿到CPU时间片
  • 优化应用代码:查看日志定位慢SQL或死循环,这是治本的办法
  • 增加CPU核数:虚拟机支持热添加CPU的话,可以临时扩容,但要先确认应用支持多核扩展
  • 限制CPU使用:用cpulimit工具限制进程的CPU占用率,防止一个进程拖垮整台虚拟机

完全没进程占CPU却卡顿

还有一种情况:top里看不到CPU占用高的进程,但系统就是卡,这时候要考虑CPUsteal(窃取时间),在top界面按下t或看最后一行的st列指标,如果st数值偏高,说明宿主机CPU资源超卖严重,虚拟机被宿主机限流了,这种情况在虚拟机里怎么优化都没用,只能联系宿主机管理员调整资源配额。

linux进程卡死怎么处理

进程卡死和进程卡顿是两个概念:卡顿是还能响应就是慢,卡死是完全不动了,发现进程卡死后,不要慌着重启虚拟机,先确认进程状态,因为有些“卡死”其实是在正常等待。

查看进程状态定位卡死原因

ps aux | grep PID

看STAT列,这个列很关键:

  • R:运行中,可能还在干活
  • S / D:睡眠中,D状态是等IO,这种最容易被认为是卡死
  • Linux虚拟机进程卡顿,如何高效排查优化?虚拟机卡顿怎么解决

    Z:僵尸进程,已经死了但父进程没接收退出码

  • T:被暂停了

僵尸进程怎么清理

僵尸进程杀不掉,因为它已经死了,不需要杀,需要处理的是它的父进程,常见做法:

ps -o ppid= -p 僵尸进程PID

找到父进程后,看父进程是什么,如果父进程是init或systemd,僵尸进程会被自动回收;如果父进程是业务程序,检查业务代码里是不是忘了调用wait()。

一个经验判断:如果僵尸进程数量很少(几个),不影响系统;如果僵尸进程几十上百个,那必然伴随进程卡顿和内存泄漏,这种情况建议重启父进程服务,而不是一个个处理僵尸进程。

D状态进程处理

D状态是“不可中断睡眠”,进程正在等磁盘IO请求完成,如果D状态进程持续不消失,说明磁盘出了问题,通常有这几种可能:

  • 磁盘硬件故障(SCSI/RAID卡报错)
  • NAS/SAN存储网络断开
  • 文件系统死锁

排查方式用dmesg看内核日志:

dmesg -T | tail -50

如果有hung_task_timeout_secs或blocked for more than 120 seconds等提示,基本可以确认IO子系统卡死了,这种情况虚拟机内部能做的事很少,建议联系基础设施管理员检查磁盘存储状态。

linux内存不足导致卡顿怎么办

内存不足引起的卡顿有自己的特征:系统无响应但CPU空闲,按free -h看内存情况:

free -h

观察Swap使用量:如果Swap使用持续走高且si和so数值很大,说明内存不够用,系统一直在做内存和磁盘之间的数据交换,这种交换极其消耗性能。

排查内存占用大户

top -M

或

ps aux --sort=-%mem | head -20

看到占用高的进程后,评估是否合理,如果是不需要的服务,systemctl stop 服务名把它停掉;如果是业务进程,考虑调JVM堆内存或增加物理内存。

清理缓存释放内存

Linux会把空闲内存用作文件缓存,这是正常行为,不需要也不应该手动清理,但如果短时间内大量进程申请内存,可以先临时释放部分缓存:

sync && echo 3 > /proc/sys/vm/drop_caches

Linux虚拟机进程卡顿,如何高效排查优化?虚拟机卡顿怎么解决

注意:这个操作只能清理缓存,不能解决真正的内存泄漏问题,经常看到有文章教人定时清理缓存,行业共识认为,频繁清缓存其实掩盖了真实问题,治标不治本。

linux iowait过高怎么优化

IO等待高是虚拟机卡顿里最棘手的问题之一,因为虚拟机磁盘本质上是宿主机上的一个文件,IO路径比物理机更长,延迟更高,如果宿主机磁盘本身是机械硬盘,性能会更差。

判断IO瓶颈

用iostat命令:

iostat -x 1 5

重点看%util列,如果持续接近100%,说明磁盘已经跑满了,再看await列,正常SATA SSD的await应该在几毫秒到十几毫秒,如果涨到几百毫秒甚至几秒,说明磁盘响应严重变慢。

IO优化实操

  • 应用层面:减少不必要的日志写入,用缓冲写入替代每次同步写,把临时文件放到tmpfs内存盘里
  • 文件系统层面:调整挂载参数,比如mount -o noatime减少访问时间更新,能降一部分IO
  • 存储层面:如果虚拟机磁盘是共享存储,确认是不是存储网络带宽占满
  • 架构层面:把高频读写的数据库数据迁到本地NVMe盘,或者加Redis缓存挡一层读请求

linux虚拟机卡顿常见问题解答

虚拟机卡顿和物理机卡顿的排查方式有啥不同?

虚拟机多了一层宿主机资源竞争的因素,物理机卡顿优先查硬件故障,虚拟机卡顿除了查自身CPU、内存、IO,还要通过st指标确认是否被宿主机限流,必要时联系宿主机管理员观察宿主机侧的资源运行情况。

为啥Linux虚拟机用着用着就变卡,重启后又好了?

多数情况下是内存碎片化、文件句柄泄漏或缓存堆积导致的,进程长时间运行后,内存分配效率下降,文件句柄达到上限会影响新请求的创建,重启只是清空了运行状态,不解决根本问题,建议排查出现卡顿前后的日志和监控趋势,定位具体是哪类资源持续增长。

linux虚拟机卡顿,加内存还是加CPU?

先跑一遍vmstat和top看瓶颈在哪,再决定加哪样资源,CPU排队严重就加核数,Swap频繁使用就加内存,wa高就换更快的磁盘或优化IO路径,盲目加配置解决不了问题,甚至可能因为资源争抢变得更卡。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱