一文搞懂服务器超卖(CPU/内存超分)

超卖(Overcommit)是云服务厂商(如AWS、Azure、Google Cloud等)或虚拟化平台提供商(如VMware、KVM等)常用的一种资源管理策略。

超卖(Overcommit)是云服务厂商(如AWS、Azure、Google Cloud等)或虚拟化平台提供商(如VMware、KVM等)常用的一种资源管理策略。

服务器超卖(Overcommit,又叫超分)是虚拟化平台中最常见、也最容易被忽视的问题之一。很多人第一次遇到虚拟机卡顿、进程突然变慢、业务性能抖动、top 里 st 飙升,其实背后核心就是:物理机被“超卖”了。

这篇文章带你彻底搞懂:

  • 什么是超卖(Overcommit)
  • CPU、内存、IO 三种资源如何超卖
  • 如何判断当前物理机是否超卖
  • “st(steal time)”到底代表什么
  • 超卖对虚拟机的真实影响
  • 应该把超卖比例控制在多少
  • 如何避免业务被超卖带来的性能抖动

一文搞懂服务器超卖(CPU/内存超分)

一、什么是服务器超卖?

什么是 cpu steal time?如果你在物理机上查看这个指标,这个指标必然是 0,只有虚拟机才需要关注这个指标。我们看一下 CPU steal time 的定义(来自 ibm.com):

Steal time is the percentage of time a virtual CPU waits for a real CPU while the hypervisor is servicing another virtual processor.

虚拟机毕竟是被虚拟出来的,虚拟机要用到 CPU,最终还是要通过宿主机的CPU来完成,如果宿主机的 CPU 正在为其他虚拟机服务,那么当前虚拟机就会等待,这个等待的时间就是 steal time。

超卖(Overcommit)是云服务厂商(如AWS、Azure、Google Cloud等)或虚拟化平台提供商(如VMware、KVM等)常用的一种资源管理策略。云服务厂商的硬件资源(如CPU、内存、GPU、存储等)有限,为了提高资源利用率,降低成本。通过超卖,厂商能更高效利用资源。实现以下目标:

  • 提高资源利用率:许多用户资源使用率不高,存在明显波峰波谷,超卖可充分利用闲置资源。
  • 降低成本:用更少硬件资源支持更多用户,降低单位成本。
  • 灵活定价:提供更灵活的定价模型(如按需付费、预留实例等),吸引更多用户。

你购买的云主机也可能出现超卖问题哦!

一句话总结:超卖 = 分配给虚拟机的资源 > 物理机的真实资源。

比如一个物理机有16核CPU,但你创建的虚拟机总 CPU 数量却是:

VM1:6 vCPU  
VM2:8 vCPU  
VM3:4 vCPU  
VM4:6 vCPU  
总和 = 24 vCPU

24 vCPU > 16 实际核➡️ 这就是CPU 超卖。

同样道理:

  • 分配 256GB 内存,但物理机只有 128GB ➝内存超卖
  • 多台 VM 同时读写同一块磁盘 ➝IO 超卖

虚拟化允许这样做,但必须控制比例,否则性能会严重下降。

二、为什么要超卖?

因为:

  • 大部分业务不可能同时把 CPU 跑满
  • 内存使用也经常有波峰波谷
  • 资源利用率不超卖会很低

超卖让虚拟化平台能“压榨”物理机资源,提高成本利用率。

但——过度超卖会导致业务性能动荡、抖动、延迟升高。

三、最常见的三种超卖类型

1. CPU 超卖(最影响性能)

虚拟化平台把 vCPU 调度到物理 CPU 核心上执行。

如果分配的 vCPU 太多,超过了物理核心的承载:

  • VM 需要 CPU 时,却抢不到
  • top 中 CPU usage 不高,但是业务很卡
  • VM 内看到大量st(steal time)

👉 CPU 超卖是导致“虚拟机卡顿”最常见的元凶。

2. 内存超卖

表现为:

  • 使用了KSM(内存页合并)
  • 或内存 balloon(气球)机制
  • 一旦所有 VM 都需要内存,就会触发swap,性能极差

一般建议:内存不要超卖或超卖比例一个管理周期内需非常低。

3. 磁盘/IO 超卖

多个 VM 同时访问一块物理磁盘:

  • IOPS 不够
  • 延迟飙升
  • MySQL / Redis / ES 等服务出现延迟、请求堆积

IO 超卖是最“隐性的”性能杀手。

四、如何判断物理机是否超卖?

⭐ ST(Steal Time)是判断超卖的核心指标!

在虚拟机内执行:top,你会看到:

一文搞懂服务器超卖(CPU/内存超分)

它的含义是:虚拟机本应该得到 CPU,但10.4%的时间被物理机抢走了。

换句话说:

  • ST 低(<2%) → 正常
  • ST 高(>5%) → 有干扰,可以感知到卡顿
  • ST >10% → 明显过载
  • ST >20% → 业务明显受损,虚拟机随时可能抖动

这是判断 CPU 是否超分的最直接办法。

五、看真实例子:虚拟机显示 6 vCPU ≠ 实际 6 核

你提到的现象非常典型:

“虚拟机分了 6 vCPU,但实际是不是能拿到 6 核?”

答案:

  • ✔如果没有超卖 → 是的,你能获得完整 6 核性能
  • ❌如果超卖严重 → 实际可能只能拿到 2~3 核,甚至更低

你看到 6 核只是“虚拟 CPU”,不是实际 CPU。

六、超卖对服务的影响

CPU 超卖 → 服务卡顿、延迟高:

  • 请求累计
  • Redis 延迟飙升
  • Java stop-the-world 更频繁
  • k8s 节点上 Pod 莫名超时
  • Web 服务 QPS 波动大

内存超卖 → 持续 swap、服务抖动:

  • MySQL / ES lock
  • Redis 出现 fork 卡死(导致 AOF 重写失败)
  • JVM OOM 频发

IO 超卖 → 数据库延迟秒级:

  • MySQL QPS 明显下降
  • Kafka lag 迅速增加
  • 各种 timeout

七、超卖比例应该控制多少?(经验结论)

类型

建议超卖比例

原因

CPU

1.5 ~ 2 倍

大多数应用 CPU 不满载

内存

0 ~ 1.1 倍

大量交换会崩盘

IOPS

不建议超卖

IO 冲突对敏感应用影响极大

举例:

物理机有 16 核 CPU
最多分配 24 ~ 32 vCPU(超卖 1.5~2 倍)

如果是云厂商,比例可以更高(但那是商业行为)。

八、如何避免业务被超卖影响?

1. 强烈建议业务机器固定性能:

给关键虚机绑定真实 CPU(pinned CPU)如 PVE/KVM:

taskset / CPU pinning

2. 禁止在数据库/中间件上做 CPU 超卖

尤其:

  • MySQL
  • Redis
  • ES
  • Kafka
  • Zookeeper

这些IO / CPU 强依赖组件必须避免ST增高。

3. 持续监控 ST

你的监控体系应该包含:

  • 虚机 st(steal)
  • 宿主机 CPU load
  • 宿主机 IO 延迟

4. 不要混跑离散型和连续型业务

例如:❌ 在同一物理机上跑

  • 大数据 Spark、Hadoop 作业
  • 在线业务 Web / Redis

这必炸。

©本文为清一色官方代发,观点仅代表作者本人,与清一色无关。清一色对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。本文不作为投资理财建议,请读者仅作参考,并请自行承担全部责任。文中部分文字/图片/视频/音频等来源于网络,如侵犯到著作权人的权利,请与我们联系(微信/QQ:1074760229)。转载请注明出处:清一色财经

(0)
打赏 微信扫码打赏 微信扫码打赏 支付宝扫码打赏 支付宝扫码打赏
清一色的头像清一色管理团队
弹性AI架构:数据中心如何玩转"变形金刚"式资源调度?
上一篇 2026年1月20日 19:00
南向资金追踪|逆市净流入超36亿港元 加仓美团及泡泡玛特流出中芯国际
下一篇 2026年1月20日 20:00

相关推荐

发表回复

登录后才能评论

联系我们

在线咨询:1643011589-QQbutton

手机:13798586780

QQ/微信:1074760229

QQ群:551893940

工作时间:工作日9:00-18:00,节假日休息

关注微信