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

ubuntu虚拟机繁忙怎么办?如何排查

导读Ubuntu虚拟机卡顿、繁忙甚至假死时,先按住Ctrl+Alt+F2切换到字符终端,用top按住P键按CPU排序、按M键按内存排序看进程,再用iostat看磁盘IO,最后看物理机负载,多数情况下不用重启,找准瓶颈才是根治办法,如果连字符终端都切不过去,再考虑从宿主机强制重启,但那是最后手段,会丢失未落盘数据,而……

Ubuntu虚拟机卡顿、繁忙甚至假死时,先按住Ctrl+Alt+F2切换到字符终端,用top按住P键按CPU排序、按M键按内存排序看进程,再用iostat看磁盘IO,最后看物理机负载,多数情况下不用重启,找准瓶颈才是根治办法。如果连字符终端都切不过去,再考虑从宿主机强制重启,但那是最后手段,会丢失未落盘数据,而且问题大概率还会复现。

ubuntu虚拟机卡顿怎么解决先分清是虚拟机忙还是物理机忙

很多人在遇到Ubuntu虚拟机卡顿时的第一反应是"配置不够",甚至直接开新配置的实例重装系统。虚拟机卡顿往往不是单一原因,至少可以从虚拟机内部和宿主机外部两个维度来看,行业共识认为,虚拟机性能问题中,有相当一部分不是Guest系统本身的问题,而是宿主机资源争抢或虚拟化层配置不当造成的。

用三个命令快速定位瓶颈

登录Ubuntu虚拟机,依次执行以下操作,每一步都花不到一分钟:

  • 运行top,看%Cpu(s)这一行,后面有us(用户态)、sy(内核态)、wa(等待IO)三个关键值,如果wa数值较高,说明磁盘或网络IO在拖后腿;如果us或sy非常高,大概率是计算密集型进程或内核态频繁切换。
  • 运行free -h,看内存。available如果比total小很多,且Swap的used值不是0,说明内存已经打到交换分区去了,这也是典型的"忙"。
  • 运行iostat -x 1,重点看%util和await。%util长期接近100%,说明磁盘已经顶满;await数值高,说明IO队列过长。

别忘了看一眼宿主机

如果你有宿主机权限,直接在宿主机上执行top或htop,看所有虚拟机的QEMU进程占用了多少CPU。一个常见的坑是:宿主机已经过载,但每个虚拟机里的负载看起来都不算高,此时需要关注的是%steal这一列,如果它一直超过10%,说明宿主机CPU核数不够分,你加多大内存都没用,只能减少虚拟机数量或提升物理机配置,虚拟机里看到的CPU时间不是物理机的全部,被抢占的时间是藏在steal里的。

ubuntu虚拟机繁忙怎么办?如何排查

ubuntu虚拟机cpu占用过高怎么办从进程排查到参数调优

top里按下P键,进程按CPU占用从高到低排序,这一步能直接告诉你谁在烧CPU。

揪出隐藏的CPU大户

常见的高占用进程和应对思路:

  • systemd-journald:日志积累过多时会出现持续高CPU,检查/var/log/journal目录体积,用journalctl --vacuum-size=200M限制日志大小,这是Ubuntu系统里相当容易被忽略的一个原因。
  • php-fpm或python进程:如果是运行网站的虚拟机,说明并发请求已经超过进程池上限,需要调低pm.max_children,或者上缓存(如OPcache、Redis)。
  • vmtoolsd:VMware虚拟机的Tools服务偶尔会陷入死循环,如果它的CPU占用常年在20%以上,尝试在虚拟机里重启该服务:systemctl restart vmtoolsd。
  • conky或桌面特效进程:桌面版Ubuntu特有的问题,gnome-shell偶尔会吃满一个核,关闭不用的扩展或窗口动画能明显改善。

调整CPU配额和亲和性

如果某几个进程确实需要长期占用大量CPU,不要一味增加虚拟机核数,给你两个更实际的做法:

  • 给虚拟机绑核,在宿主机上用virsh vcpupin将虚拟机的vCPU固定到特定物理核上,避免上下文切换抖动,这能解决低延迟场景下的卡顿,但需要你确认物理机的NUMA拓扑,别让vCPU跨Node访问内存,否则性能损失更大。
  • 调整CPU权重,在宿主机上对特定虚拟机限制CPU份额,用virsh schedinfo <vm_name> --set cpu_shares=2048,数值越高,CPU调度优先级越高,相反,如果是后台测试虚拟机占满了CPU导致前台虚拟机卡顿,调低它的cpu_shares效果立竿见影。

ubuntu虚拟机性能调优磁盘IO和内存配置是常见盲区

CPU问题好排查,磁盘IO问题需要更多耐心,特别是虚拟磁盘的IO性能与物理机硬盘类型、缓存策略和文件系统挂载参数高度相关。

磁盘慢的三种典型场景

  • 虚拟机里大文件复制偶尔正常,但小文件读写频繁时明显卡顿,这是典型的随机IO性能瓶颈

    ubuntu虚拟机繁忙怎么办?如何排查

    ,在机械硬盘宿主机上尤为突出,解决方案是给虚拟机磁盘改用raw格式(或预分配QCOW2),同时检查宿主机硬盘剩余空间是否充足。

  • iostat显示%util不高,但应用响应就是慢,这时观察/sys/block/vda/queue/scheduler(vda是你的虚拟磁盘名),如果是none,可能没启用virtio多队列,需要在宿主机上开启多队列:virsh edit,给<driver name='qemu' type='virtio' queues='4'/>,改完重启虚拟机,cat /sys/block/vda/queue/nr_requests可看到变化。
  • 磁盘快照累积导致读写放大,每创建一个快照,后续磁盘写入都要先复制旧数据,快照链越长,性能衰退越明显,建议定期合并快照,删除不再需要的分支。

内存参数调整让持续负载更稳

内存不足时,即使物理内存还有剩余,Ubuntu也可能主动使用Swap,修改/etc/sysctl.conf把vm.swappiness从默认的60调低到10,让系统优先使用物理内存。给虚拟机分配超大内存页(HugePages)也是提升内存密集型应用性能的有效手段,但需要宿主机支持并预留连续内存,适合数据库等特定负载,普通桌面用途不必折腾。

不重启的排查顺序先看虚拟化层配置再看虚拟机内部

排查顺序会直接影响定位速度,我推荐按这个固定流程走:

  1. 确认物理机负载是否过高,是否存在其它虚拟机抢资源,这一步可以在宿主机上用virt-top实时查看各虚拟机状态。
  2. 登录目标虚拟机,用uptime看load average,超过CPU核数一两倍说明确实忙,但结合top看是用户态还是IO等待。
  3. 检查虚拟化层配置。virsh dominfo <vm_name>确认最大内存和当前内存是否一致;virsh vcpucount <vm_name>确认在线CPU数。
  4. 检查系统日志dmesg -T | tail -50,因为OOM Killer杀掉进程、磁盘只读错误、SCSI命令超时这类偶发问题,大都会在dmesg里留下线索。
  5. 如果以上都没问题,用perf top采样几秒钟,看内核热点在哪个函数上,能精确指出是网络软中断还是页表操作。

网络引发的假"繁忙"

还有一个容易漏掉的因素:

ubuntu虚拟机繁忙怎么办?如何排查

网卡中断总在一个CPU核上,如果top里某个软中断进程(ksoftirqd)长期占用100%,且虚拟机网络流量不大,多半是virtio网卡的队列没多开,在宿主机上查看网卡队列数(ethtool -l ens3),如果Combined值只有1,在虚拟机XML里为<interface>添加多队列参数后重启。

什么情况下必须重启虚拟机

排查顺序走完,只有三种情况建议直接重启:

  • 内核死锁或不可中断的D状态进程堆积,kill -9都无法解决,并且系统日志中出现大量blocked for more than 120 seconds信息。
  • 物理机要关机维护,且虚拟机的离线快照不可用,只能重启配合迁移。
  • 虚拟机的根文件系统损坏,但你现在没有远程救援环境,重启后进入恢复模式是最后选择。

Ubuntu虚拟机繁忙是个综合性问题,不单是"内存不够"或"CPU不行"一句话能概括的。 先定位、再调整、最后才考虑重启,才能避免治标不治本。

关于ubuntu虚拟机频繁卡顿的Q&A

ubuntu虚拟机卡顿怎么解决才能不影响已保存的数据?

先做镜像快照,再执行排查操作。 无论哪种调优操作,都可能涉及服务重启,快照之后,你可以放心地修改/etc/sysctl.conf或调整虚拟化参数,如果修改后系统无法启动,能靠快照回滚,多数情况下,卡顿问题可以通过调参数解决,不影响现有数据。

ubuntu虚拟机cpu占用不高但卡顿是什么原因?

这种情况优先查磁盘IO和内存交换。iostat观察%util是否在100%附近,free看Swap是否被占用,宿主机磁盘空间告急也会让虚拟磁盘的写性能骤降,df -h检查宿主机的根分区使用率,如果宿主机用了网络存储(NFS/Ceph),网络延迟也会把"慢"传导给虚拟机。

调整虚拟机vCPU的数量之后,ubuntu虚拟机性能会立竿见影提升吗?

分场景,如果是CPU密集型计算任务且宿主机资源充足,增大vCPU数量确实能缩短任务执行时间,但如果是单线程应用或IO瓶颈,增加vCPU没有直接帮助,行业专家指出,虚拟机调优的第一步永远是确认瓶颈在哪个子系统,而不是盲目堆资源。

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