云服务器超卖怎么判断:CPU、内存、磁盘IO三个关键指标排查
超卖本身不是故障,而是云厂商的常规商业模式:物理机资源有限,把CPU、内存、磁盘按比例分配给多个用户,只要大多数用户不长期跑满,就能稳定运行。
但当你发现服务器明显变慢、跑分远低于标称,就需要用云服务器超卖识别方法来判断是否被“挤”了。
下面按Linux系统实际操作,一步步排查CPU、内存和磁盘IO三个关键指标。
先看清CPU是否被其他用户抢走
登录服务器,执行 top,看第一行 %Cpu(s) 里的 st 值。st 代表“被虚拟机偷走的时间”,也就是物理CPU分配给其他虚拟机的比例。
- 正常空闲或低负载时,
st通常小于 1%。 - 持续高于 5%,说明邻居在抢CPU;高于 10% 会明显卡顿。
如果只看一次不放心,用 vmstat 1 5 连续采样5次,观察 st 列是否稳定偏高。
注意:st 高不一定等于恶意超卖,也可能是你自己在跑高负载任务,先排除自身进程。
另一个辅助命令是 cat /proc/loadavg,如果负载远大于你实际CPU核数,但 top 里看不到对应的高CPU进程,就要怀疑外部争抢。
内存:分配了不等于能用
云服务器标称“2G内存”,实际可用往往只有1.8G左右,这是系统预留,不算超卖。
真正的超卖信号是:free -h 显示总内存正常,但 available 远低于预期,且没有大进程占用。
执行:
free -h
ps aux --sort=-%mem | head -10
先看 available 列,它才是应用程序真正能申请到的内存。
如果 available 只有几十MB,但 ps 里前10个进程合计占用不到标称的一半,说明内存可能被超分给了其他虚拟机。
更直接的方法是用 smem 或 /proc/meminfo 里的 MemAvailable 做对比。
如果 MemTotal 是2G,MemAvailable 长期低于200M,而你的业务几乎不占内存,基本可以判定内存被超卖。
磁盘IO延迟:最容易被忽视的超卖指标
磁盘超卖表现为:你买的是SSD,但随机读写延迟像机械硬盘。
用 dd 做简单顺序写测试:
dd if=/dev/zero of=./testfile bs=1M count=1024 conv=fdatasync
看输出的 MB/s。
如果标称SSD,写入却低于50MB/s,且多次测试波动极大(比如一次200MB/s,一次20MB/s),说明存储后端被多个用户共享争抢。
更准确的是用 fio 测随机读写,
但零基础用户先看 dd 和 iostat -x 1 里的 %util 和 await。await 持续超过20ms(SSD应低于5ms),
就是IO被拖慢的明显信号。
网络和邻居IP的旁证
超卖严重的机器,网络也会抖动。
用 ping 你的网关或公网IP,观察延迟是否规律性跳高。
如果同一时间 st 也高,基本可以确认是物理机资源争抢。
另外,部分云厂商的“突发性能实例”会限制CPU积分,积分用完就降频,这不算超卖,而是计费模式。
买之前看清是“共享型”还是“独享型”,共享型天然允许超卖。
避坑与验证清单
- 不要只凭一次
top就下结论,至少连续观察5分钟。 - 先排除自身因素:有没有挖矿木马、异常进程、定时任务。
- 测试磁盘IO时,文件不要写在系统盘根目录,避免影响业务。
- 如果确认超卖,先提交工单要求更换宿主机;多数厂商会配合迁移。
- 迁移后重复上述命令,对比
st、available、dd速度是否恢复正常。
总结:云服务器超卖识别方法的核心是“看外部争抢,而不是只看自己”。
CPU看 st,内存看 available,磁盘看 await 和写入速度。
三项中有两项持续异常,且排除了自身原因,就值得联系厂商处理。
常见问题
问:st值偶尔跳到10%正常吗?
偶尔跳高正常,持续高于5%才需要关注。用 vmstat 1 10 取平均值更准。
问:免费云服务器是不是一定超卖?
免费或极低价的共享型实例,超卖概率较高,但不绝对。用本文方法实测最可靠。
问:超卖能退款吗?
各厂商政策不同,通常先工单沟通迁移。购买前看清SLA中关于CPU、内存的承诺,保留测试截图作为依据。