一键登录 更安全快捷
邮箱登录
我已阅读并接受 用户协议 隐私政策

虚拟机运行卡顿缓慢,但宿主机/虚拟机CPU内存使用率极低完整排查方案

虚拟机运行卡顿、业务响应缓慢,但查看虚拟机内部、ESXi宿主机的CPU和内存使用率都很低,该故障最常见根因为ESXi宿主机内存overcommit(内存过量超分)引发虚拟机swap交换颠簸;可以登录ESXi使用esxtop工具查看swapped交换指标验证故障,根治方案是给故障虚拟机增加分配内存,降低宿主机内存超分压力,减少swap磁盘交换行为。

有VMware全系列产品官方资源和定制版资源需求的可以移步:

一、现场踩坑完整故障背景

近期一台ESXi服务器承载多台业务虚拟机,服务器物理内存总量128GB,所有虚拟机分配内存总和达到224GB,存在严重内存超分。

其中一台后端业务虚拟机出现异常卡顿,接口响应延迟数十秒,登录虚拟机内部查看top、free命令,CPU占用常年低于10%,内存使用率仅40%,完全看不到高负载瓶颈;登录vCenter查看宿主机整体资源监控,整机CPU空闲充足,整机内存占用也未显示100%耗尽,初期完全无法定位卡顿根源。

翻阅VMware官方性能调优文档,得知内存超分场景下ESXi会启用内存交换机制,即便虚拟机内部内存占用不高,宿主机内存不足时也会强制将虚拟机内存数据置换到本地磁盘swap分区;磁盘IO速度远低于物理内存,频繁交换就会造成虚拟机卡顿。随后使用esxtop工具查看swapped交换指标,数值持续上涨,确认故障,扩容虚拟机内存后swap交换停止,虚拟机卡顿问题彻底解决。

1.1 ESXi内存overcommit与swap交换底层原理(踩坑后整理)

  • ESXi内存超分机制:vSphere支持内存过量分配,所有虚拟机分配内存总和可以超过服务器物理内存,依靠内存复用、交换、内存膨胀技术节省物理内存;

  • 内存swap交换触发条件:宿主机全局物理内存资源紧张,内存膨胀(ballooning)机制无法回收足够闲置内存,ESXi内核会将虚拟机部分内存页面写入宿主机本地存储swap交换分区;

  • 关键误区:swap交换和虚拟机内部内存使用率无关,只看宿主机全局内存余量;哪怕虚拟机内部只使用了少量内存,只要宿主机内存超分严重,ESXi依然会置换该虚拟机内存至磁盘;

  • 性能损耗根源:物理内存读写速度是本地SSD的数十倍、机械硬盘数百倍,频繁swap页面置换会产生大量磁盘IO等待,虚拟机所有操作都会被磁盘IO阻塞,直观表现为卡顿缓慢,而CPU、内存使用率指标却偏低。

1.2 本次故障直接触发诱因

  1. ESXi宿主机虚拟机内存总分配量远大于物理内存,内存overcommit超分比例过高;

  2. 多台虚拟机同时运行,内存膨胀机制回收内存达到上限,宿主机启动swap内存置换;

  3. 故障虚拟机分配内存偏小,ESXi优先置换该虚拟机内存页面到磁盘,持续swap交换造成业务卡顿;

  4. 常规监控只展示CPU、内存使用率,无swap交换指标监控,故障初期无法直观发现瓶颈。

二、标准故障定位排查流程(一步步确认swap瓶颈)

  1. 登录故障虚拟机内部,执行top、free -m查看资源:确认CPU空闲、内存使用率低,排除虚拟机内部高负载瓶颈;

  2. 登录ESXi主机SSH,输入esxtop启动性能监控工具,按m切换至内存监控页面;

  3. 重点观察两个核心指标:SWAP(swapped/swapin/swapout),若swapout数值持续上涨,代表宿主机正在把虚拟机内存写入磁盘交换分区,确认swap瓶颈;

  4. 查看宿主机内存复用、膨胀指标,确认宿主机整体内存资源处于紧张状态,内存超分严重;

  5. 临时扩容故障虚拟机内存,持续观察esxtop swapout指标,数值停止增长、业务卡顿消失,验证故障根因。

三、分层解决方案:临时应急缓解 + 长期根治优化

3.1 现场临时应急方案(快速消除卡顿)

  1. 临时关闭宿主机内部低优先级、测试闲置虚拟机,释放宿主机全局物理内存,降低swap交换频率;

  2. 调高故障虚拟机内存分配大小,减少ESXi对该虚拟机的内存置换优先级,缓解swap颠簸;

  3. 临时调整虚拟机内存膨胀上限,优先保障核心业务虚拟机物理内存常驻,减少页面交换;

  4. 将宿主机swap交换分区迁移至高速SSD存储,降低磁盘IO延迟,轻微缓解卡顿(仅临时兜底方案)。

3.2 企业长期标准化根治优化方案

  1. 合理控制宿主机内存超分比例,生产环境内存overcommit比例建议不超过1.2倍,避免内存严重透支触发大量swap交换;

  2. 根据业务负载合理分配虚拟机内存,业务虚拟机预留充足内存余量,避免ESXi优先置换内存;

  3. 完善监控告警体系,新增ESXi esxtop swapout、swapped指标监控,swap数值持续上涨触发告警,提前预判卡顿故障;

  4. 业务分层部署,核心高响应业务虚拟机部署在内存资源充足、超分比例低的ESXi主机,离线批处理任务承载高内存超分压力;

  5. 宿主机使用高性能SSD本地存储作为swap分区,禁止机械硬盘承载内存交换,降低swap IO延迟;

  6. 定期巡检宿主机内存复用、swap交换指标,批量下调闲置虚拟机内存分配,降低整机内存超分压力。

四、高频故障排错清单(现场实操各类资源卡顿场景)

故障现象根因分析标准解决方案
虚拟机卡顿,虚拟机内部CPU、内存使用率很低,无高负载ESXi宿主机内存overcommit超分,频繁swap内存交换,磁盘IO阻塞业务esxtop查看swap指标确认,给虚拟机扩容内存,降低宿主机内存超分比例
同宿主机多台虚拟机,只有一台业务卡顿,其余机器运行正常卡顿虚拟机分配内存偏小,ESXi优先置换小内存虚拟机内存页面到swap磁盘单独扩容卡顿虚拟机内存,提升内存常驻优先级
业务凌晨低峰期卡顿消失,白天业务高峰期卡顿严重白天所有虚拟机业务同时运行,宿主机内存资源耗尽,swap交换加剧;凌晨部分虚拟机闲置,内存压力下降拆分业务至多台ESXi主机,降低单台服务器内存超分压力
扩容宿主机物理内存后,虚拟机卡顿彻底消失,swap指标归零原服务器物理内存容量不足,整机内存超分严重,扩容后无内存置换需求内存长期紧张的集群,直接升级服务器物理内存为最优根治方案
虚拟机内存分配充足,但宿主机swap数值持续上涨,多台虚拟机全部轻微卡顿整机虚拟机总分配内存远超物理内存,全局内存资源透支,批量触发swap交换迁移部分虚拟机至空闲ESXi,下调整机内存超分比例

五、运维高频误区避坑(现场踩坑复盘总结)

1. 误区:虚拟机内部内存使用率很低,说明内存资源充足,卡顿和内存无关纠正:swap交换是宿主机全局内存管控行为,和虚拟机内部内存占用无关;哪怕虚拟机只用了少量内存,宿主机整体内存不足时,依然会置换该虚拟机内存至磁盘,造成卡顿。

2. 误区:查看vCenter内存使用率图表数值不高,代表宿主机内存资源充足,不会产生swap交换纠正:vCenter默认内存监控仅展示虚拟机已使用内存,不会展示swap交换指标;内存超分场景下整机内存占用看似平稳,后台swap置换已经持续运行,需要通过esxtop查看swap指标才能发现。

3. 误区:卡顿是磁盘IO瓶颈,只需要更换高速SSD硬盘就能彻底解决纠正:更换SSD只能降低swap交换的IO延迟,无法从根源消除内存置换行为;只要宿主机内存超分严重,swap交换会持续发生,业务卡顿只能缓解不能根治,核心解决手段是控制内存超分、扩容虚拟机/宿主机内存。

4. 误区:只要降低虚拟机内存分配,减少整机内存总占用,就能消除swap卡顿纠正:缩小业务虚拟机内存分配会加剧swap故障,ESXi会优先置换内存容量更小的虚拟机页面;正确做法是扩容业务虚拟机内存,下调闲置测试虚拟机内存,均衡整机内存分配。

5. 误区:CPU空闲、内存占用低,卡顿一定是网络、存储业务本身逻辑问题,不需要排查宿主机内存swap纠正:本次故障虚拟机网络、业务代码、磁盘存储均无异常,唯一瓶颈是ESXi宿主机内存swap交换;遇到CPU、内存双低但业务卡顿场景,优先使用esxtop查看swap交换指标,快速定位内存超分瓶颈。

用户留言 User Comments