VPS行业有个公开的秘密叫超售(Overselling)——服务商把一台物理机的资源卖出两倍甚至三倍的量,赌的就是用户不会同时用满。超售本身不是罪,合理范围内的超售是行业常态;但严重超售的VPS,晚高峰CPU steal飙到20%、磁盘IOPS从3万跌到300、SSH连上去都要卡三秒,这种机器买了就是浪费钱。
本文不聊虚的,直接给出一套可复现的检测命令和判断标准。新VPS到手,花30分钟跑完这些测试,超售与否一目了然。
一、超售的本质:服务商在赌什么?
超售类型 原理 典型表现
------------------------------------------------------------------------------------------
CPU超售 物理机16核,卖出30台2核VPS 晚高峰CPU steal>10%,网站响应变慢
内存超售 物理机32G,开出50台1G VPS Swap频繁使用,内存可用量<标称80%
磁盘超售 1块SSD被20个VPS共享 IOPS暴跌,文件读写卡顿
带宽超售 1Gbps端口分给50台VPS各标100Mbps 晚高峰带宽<标称30%,丢包率飙升
IP超售 1个/24段塞满用户 同IP段网站被连带封禁
超售的核心逻辑是"时间错配"——用户A白天忙、用户B晚上忙,理论上不会所有人同时满载。但当多个用户同时跑高负载(比如晚高峰大家都在做备份、编译、跑爬虫),物理资源就不够分了,你的VPS性能就会断崖式下跌。
合理超售 vs 严重超售:
指标 合理超售 严重超售(建议退款)
------------------------------------------------------------------------------------------
CPU steal time 0-5% >10%持续20分钟以上
磁盘IOPS(NVMe) >10000 <5000或<1000
磁盘顺序写入 >300MB/s <50MB/s
内存可用率 >标称值80% <标称值50%
带宽实测/标称 >80% <30%(晚高峰)
二、CPU超售检测:steal time是照妖镜
- 什么是CPU Steal Time?
Steal Time(st)表示你的VPS想使用CPU,但CPU正被Hypervisor分配给其他虚拟机,导致你等待的时间占比。
类比
------------------------------------------------------------------------------------------
Steal Time = 你去餐厅吃饭,服务员把你的菜端给了隔壁桌,你干等着的时间比例。
st=0% → 服务员只服务你,上菜飞快
st=5% → 偶尔给隔壁桌加个菜,基本不影响
st=15% → 服务员忙得团团转,你的菜半天不上
st=30% → 建议换一家餐厅
- 如何查看Steal Time?
# 方法1:top命令(最常用)
top
# 看第三行,st列
%Cpu(s): 5.2 us, 2.1 sy, 0.0 ni, 90.5 id, 0.0 wa, 0.0 hi, 0.2 si, 2.0 st
# ↑ 这就是steal time
# 方法2:iostat命令(更详细)
apt install sysstat -y # 安装
iostat -c 1 10 # 每秒刷新,显示10次
# 看%steal列
avg-cpu: %user %nice %system %iowait %steal %idle
3.50 0.00 1.20 0.00 15.30 80.00
# ↑ steal time 15.3%
# 方法3:vmstat命令(持续监控)
vmstat 1 60
# 看最后一列 st
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 892156 23456 456789 0 0 0 0 12 45 5 2 90 0 3
# ↑ st=3%
- Steal Time判断标准
steal time范围 含义 建议动作
------------------------------------------------------------------------------------------
0-5% 健康,物理机负载合理 正常使用,持续监控
5-10% 轻微超售,偶尔有感知 观察晚高峰是否持续,考虑迁移
10-20% 明显超售,性能受影响 联系服务商迁移,或准备退款
>20% 严重超售,基本不可用 立即退款换商家
关键技巧:不要只看一次瞬时值。Steal Time受瞬时负载影响,必须在多个时段多次测试,尤其是晚高峰(20:00-23:00)。
# 自动化监控脚本:每小时记录一次steal time
cat > /root/monitor_steal.sh << 'EOF'
#!/bin/bash
ST=$(top -bn1 | grep "Cpu(s)" | awk '{print $8}' | sed 's/st//')
echo "$(date '+%Y-%m-%d %H:%M:%S') steal_time=${ST}%" >> /var/log/steal_monitor.log
EOF
chmod +x /root/monitor_steal.sh
# 添加到crontab,每小时执行
crontab -l > /tmp/cron.tmp 2>/dev/null || true
echo "0 * * * * /root/monitor_steal.sh" >> /tmp/cron.tmp
crontab /tmp/cron.tmp
rm /tmp/cron.tmp
# 查看日志
tail -f /var/log/steal_monitor.log
- 区分"自身负载高"和"宿主机超售"
# 场景A:你的程序本身CPU占用高
# 表现:us(用户态)很高,st很低
%Cpu(s): 85.0 us, 5.0 sy, 0.0 ni, 5.0 id, 0.0 wa, 0.0 hi, 0.0 si, 5.0 st
# ↑ 自身程序占85% ↑ steal仅5%
# 场景B:宿主机超售,你的VPS抢不到CPU
# 表现:us不高,但st很高
%Cpu(s): 10.0 us, 2.0 sy, 0.0 ni, 60.0 id, 0.0 wa, 0.0 hi, 0.0 si, 28.0 st
# ↑ 自身程序只占10% ↑ steal高达28%
# 场景C:多台同类VPS同时st高 → 可能是自身业务问题
# 场景D:只有单台VPS st高 → 大概率是宿主机超售
三、磁盘IO超售检测:fio是唯一标准
dd命令测的是顺序写入,而真实业务(数据库、网站)几乎都是随机读写。识别磁盘超售,必须用fio测4K随机IOPS。
- dd命令(快速初筛,不准但方便)
# 顺序写入测试(创建1G文件)
dd if=/dev/zero of=/tmp/test_io bs=1M count=1024 oflag=direct
# 预期输出
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 2.345 s, 458 MB/s
# 判断标准
# >300MB/s → SSD正常
# 100-300MB/s → 普通SSD,可能轻微超售
# <100MB/s → 严重超售或HDD冒充SSD
# <50MB/s → 建议退款
dd的局限:它测的是缓存写入(除非加oflag=direct),且是顺序IO。很多超售VPS的dd结果看起来正常,但随机IOPS已经烂透了。
- fio命令(精准检测,必跑)
# 安装fio
apt install fio -y # Debian/Ubuntu
yum install fio -y # CentOS/RHEL
# 4K随机读取IOPS测试(最贴近真实业务)
fio --name=randread --ioengine=libaio --iodepth=32 \
--rw=randread --bs=4k --direct=1 --size=1G \
--numjobs=4 --runtime=60 --group_reporting
# 4K随机写入IOPS测试
fio --name=randwrite --ioengine=libaio --iodepth=32 \
--rw=randwrite --bs=4k --direct=1 --size=1G \
--numjobs=4 --runtime=60 --group_reporting
# 混合读写测试(70%读30%写,模拟数据库)
fio --name=randrw --ioengine=libaio --iodepth=32 \
--rw=randrw --rwmixread=70 --bs=4k --direct=1 --size=1G \
--numjobs=4 --runtime=60 --group_reporting
fio结果解读:
指标 NVMe SSD正常值 SATA SSD正常值 严重超售信号
------------------------------------------------------------------------------------------
4K随机读IOPS >30000 >5000 <1000
4K随机写IOPS >20000 >3000 <500
4K随机读延迟 <1ms <5ms >20ms
4K随机写延迟 <2ms <10ms >50ms
顺序读速度 >1000MB/s >400MB/s <100MB/s
顺序写速度 >800MB/s >300MB/s <50MB/s
关键技巧:fio测试时同时开另一个SSH窗口跑top,观察iowait(wa)列。如果wa很高但fio的IOPS很低,说明磁盘队列被其他VPS挤占,是超售的铁证。
- ioping(测试磁盘响应延迟)
# 安装ioping
apt install ioping -y
# 测试磁盘响应延迟(100次请求)
ioping -c 100 /tmp
# 预期输出
--- /tmp (ext4 /dev/vda1) ioping statistics ---
100 requests completed in 99.0 ms, 900 iops, 3.51 MiB/s
min/avg/max/mdev = 47.2 us / 1.10 ms / 15.2 ms / 2.34 ms
# 判断标准
# avg < 1ms → NVMe优秀
# avg 1-5ms → SSD正常
# avg 5-20ms → 轻微超售或普通SATA SSD
# avg > 20ms → 严重超售或HDD
四、内存超售检测:Swap是警报器
- 查看内存和Swap使用情况
free -h
# 输出示例
total used free shared buff/cache available
Mem: 1.9G 892M 156M 12M 902M 876M
Swap: 1.0G 512M 488M
# ↑ 注意Swap使用率
判断标准:
场景 含义
------------------------------------------------------------------------------------------
Swap使用率为0 内存充足,物理内存未超售
Swap使用率<20% 偶尔有内存交换,基本正常
Swap使用率20-50% 内存紧张,可能存在轻微超售
Swap使用率>50% 物理内存严重不足,严重超售
Swap持续读写 即使空闲时Swap也在动,说明内存被其他VPS挤占
- 内存压力测试
# 安装stress
apt install stress -y
# 压力测试:分配2G内存,持续60秒
stress --vm 1 --vm-bytes 2G --vm-keep -t 60
# 同时观察另一个窗口的free -h和vmstat
# 如果测试期间Swap使用率暴涨,说明物理内存不足
- 检查内存是否被"气球"回收
某些虚拟化平台(如VMware、部分KVM配置)使用内存气球驱动(virtio-balloon),可以动态回收"未使用"的内存分配给其他VPS。
# 查看内存气球状态
dmesg | grep -i balloon
# 或
lsmod | grep balloon
# 如果看到virtio_balloon已加载,且free -h显示的内存波动很大
# 说明内存可能被动态回收,属于软性超售
五、带宽超售检测:晚高峰是照妖镜
- Speedtest测速
# 安装speedtest-cli
apt install speedtest-cli -y
# 测试
speedtest-cli
# 重点对比:白天 vs 晚高峰(20:00-23:00)
# 如果晚高峰速度<标称带宽的30%,说明带宽严重超售
- iperf3测速(更精准)
# 安装iperf3
apt install iperf3 -y
# 服务端(在另一台VPS或本地机器上运行)
iperf3 -s
# 客户端(在被测VPS上运行)
iperf3 -c 服务端IP -t 60
# 输出示例
[ ID] Interval Transfer Bitrate
[ 5] 0.00-60.00 sec 750 MBytes 105 Mbits/sec
- 实际下载测试
# 从知名测速节点下载大文件
wget -O /dev/null https://speed.hetzner.de/100MB.bin
wget -O /dev/null https://speedtest.tele2.net/100MB.zip
# 观察下载速度是否稳定
# 如果速度剧烈波动(如100Mbps→5Mbps→80Mbps→3Mbps),说明带宽被共享
带宽超售判断标准:
时段 实测速度/标称带宽 评价
------------------------------------------------------------------------------------------
白天非高峰 >80% 正常
晚高峰20:00-23:00 >60% 轻微超售,可接受
晚高峰20:00-23:00 30-60% 明显超售
晚高峰20:00-23:00 <30% 严重超售,建议退款
六、一键检测脚本:30分钟出完整报告
手动跑命令太麻烦?用这些社区公认的脚本一键搞定。
- YABS(Yet Another Benchmark Script)
curl -sL yabs.sh | bash
# 测试内容:Geekbench 6 CPU跑分 + fio磁盘IO + iperf3全球网络测速
# 耗时:10-30分钟
# 结果可上传至VPSBenchmarks.com全球数据库对比
YABS结果解读:
指标 入门级 普通 良好 优秀
------------------------------------------------------------------------------------------
Geekbench 6单核 <400 400-800 800-1200 >1200
磁盘顺序读(MB/s) <200 200-500 500-1000 >1000
磁盘4K随机读IOPS <1000 1000-5000 5000-20000 >20000
- 融合怪(ecs.sh)— 最全面的检测
curl -L https://gitlab.com/spiritysdx/za/-/raw/main/ecs.sh -o ecs.sh && chmod +x ecs.sh && bash ecs.sh
# 测试内容:硬件信息 + CPU跑分 + 磁盘IO + 流媒体解锁 + 回程路由 + IP质量评分
# 耗时:15-45分钟
# 适合:重度评测用户,购机报告必备
- Bench.sh — 快速预览
wget -qO- bench.sh | bash
# 测试内容:系统信息 + 磁盘IO + 多地测速
# 耗时:1-3分钟
# 适合:快速确认机器基本可用性
- XY硬件体检 — 超售专项
bash <(curl -Ls https://Check.Place) -H
# 测试内容:CPU架构与跑分 + 内存容量 + 硬盘IO读写速度
# 耗时:2-5分钟
# 适合:购机后快速评估硬件底子
# 判断:硬盘连续写入速度若低于 50MB/s 需谨慎,低于 10MB/s 建议退款换机
七、超售综合判断流程图
新VPS到手
│
▼
┌─────────────────┐
│ 第一步:CPU检测 │
│ top → 看st列 │
│ 白天测3次+晚高峰3次│
└────────┬────────┘
│
┌────┴────┐
▼ ▼
st<5% st>10%
正常 可疑
│ │
▼ ▼
┌─────────┐ ┌─────────┐
│第二步: │ │ 严重超售 │
│磁盘IO检测│ │ 建议退款 │
│ fio 4K │ └─────────┘
│随机读写 │
└────┬────┘
│
┌────┴────┐
▼ ▼
IOPS>1万 IOPS<1000
正常 严重超售
│ │
▼ ▼
┌─────────┐ ┌─────────┐
│第三步: │ │ 严重超售 │
│内存检测 │ │ 建议退款 │
│ free -h │ └─────────┘
│ stress │
└────┬────┘
│
┌────┴────┐
▼ ▼
Swap<20% Swap>50%
正常 严重超售
│ │
▼ ▼
┌─────────┐ ┌─────────┐
│第四步: │ │ 严重超售 │
│带宽检测 │ │ 建议退款 │
│ speedtest│ └─────────┘
│ 晚高峰 │
└────┬────┘
│
┌────┴────┐
▼ ▼
>60% <30%
正常 严重超售
│ │
▼ ▼
┌─────────┐ ┌─────────┐
│ 机器合格 │ │ 严重超售 │
│ 正常使用 │ │ 建议退款 │
└─────────┘ └─────────┘
八、超售避坑终极建议
- 购买前识别信号
信号 风险等级
------------------------------------------------------------------------------------------
价格低于行业均价50%以上 极高(如1核1G/年付$10)
"无限流量"但带宽<10Mbps 高(公平使用策略陷阱)
OpenVZ虚拟化 高(极易超售)
商家成立<1年 中高(无口碑积累)
无测试IP提供 中(不敢让你测)
IP段内同机房VPS>30台 中(Censys查询)
- 购买后黄金72小时
时间节点 必做事项
------------------------------------------------------------------------------------------
Day 1 跑YABS/bench.sh,记录基准数据
Day 1-3 每小时记录一次steal time(用上面的脚本)
Day 2 晚高峰(20:00-23:00)跑全套测试
Day 3 对比白天和晚高峰数据,计算性能衰减率
Day 3 若衰减率>50%,立即申请退款
- 长期监控方案
# 安装NetData(实时可视化监控)
bash <(curl -Ss https://my-netdata.io/kickstart.sh)
# 安装后访问 http://你的VPS_IP:19999
# 可实时查看CPU、内存、磁盘、网络的详细指标
- 退款策略
商家类型 退款窗口 策略
------------------------------------------------------------------------------------------
主流大厂(DO/Vultr/Linode) 按小时计费 销毁重建,无损失
国内大厂(阿里云/腾讯云) 5-7天 工单申请,通常爽快退款
中小商家 3-7天 尽快测试,超期难退
年付超低价商家 通常不退 购买前务必索要测试IP
总结
识别VPS超售不需要复杂工具,核心就三件事:
- 看steal time — 晚高峰持续>10%就是超售铁证
- 跑fio测4K IOPS — NVMe<1000或SSD<500就是磁盘超售
- 对比白天和晚高峰 — 性能衰减>50%说明资源被严重争抢
记住:在退款保证期内完成所有测试。大部分商家给3-7天退款窗口,错过就没了。花30分钟测试,换一台不卡的VPS,比花一个月忍受卡顿值当得多。




