如何判断一个 VPS 所在的母鸡有没有超售?
如何判断一个 VPS 所在的母鸡有没有超售?
2026-09-10 15:34
购买 VPS 后,很多人都会关心一个问题:服务商有没有超售?自己的 VPS 是否正在和过多“邻居”争抢 CPU、磁盘等资源?
在 VPS 内部,我们通常看不到宿主机运行了多少台虚拟机,也无法准确计算服务商超售了多少倍。不过,可以通过 CPU 抢占、任务排队、磁盘延迟和不同时段的性能变化,判断 VPS 是否正在受到宿主机资源争用的影响。
一、什么是“母鸡”和“超售”?
- 母鸡:运行虚拟化平台的物理服务器,也叫宿主机。
- 小鸡:宿主机上创建出来的 VPS,也就是虚拟机。
一台物理服务器通常会运行多台 VPS,它们共同使用物理 CPU、内存、磁盘和网络。普通 VPS 标注的“2 核”或“4 核”,通常是虚拟 CPU 数量,并不代表这些物理核心由一台 VPS 独占。
真正需要判断的不是“有没有任何超售”,而是超售是否已经造成持续、可观察的性能下降。
二、Linux VPS:先看 top 里的 %st
在 Linux VPS 中运行:
top
顶部会显示类似内容:
%Cpu(s): 1.2 us, 0.0 sy, 0.0 ni, 98.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%st 是什么?
st 是 Steal Time 的缩写,表示虚拟机已经准备好运行,但宿主机暂时把物理 CPU 分配给了其他虚拟机。
例如,程序在 10 秒内一直需要 CPU,但宿主机只分配了 8 秒,另外 2 秒用于运行其他 VPS,那么这段时间的 %st 就可能接近 20%。
%st 多高需要注意?
- 0%~2%:通常正常。
- 偶尔达到 3%~5%:一般不必担心。
- 持续超过 5%:可能开始影响性能。
- 持续超过 10%:宿主机可能比较拥挤。
- 持续超过 20%:通常会有明显影响。
瞬间升高不能证明服务商一定超售。只有在 VPS 确实有 CPU 任务时,%st 连续数分钟偏高,并且程序同时变慢,才具有较强参考价值。
三、除了 st,还要看哪些字段?
- us:应用程序使用的 CPU。持续偏高通常说明程序本身正在计算。
- sy:Linux 内核使用的 CPU。持续偏高时可检查网络、系统调用或内核工作。
- id:CPU 空闲时间。数值越高,表示 VPS 当前越空闲。
- wa:等待磁盘等 I/O 的时间。持续偏高时应检查存储性能。
- si:软件中断。持续偏高可能与大量网络数据包有关。
- st:被宿主机延迟调度的 CPU 时间。持续偏高时应怀疑 CPU 争用。
st 更像“CPU 争用提示”,而 wa 更像“存储瓶颈提示”。wa 高可能来自 VPS 自身大量读写、数据库随机 I/O、云盘限速,也可能来自宿主机共享存储拥堵。
四、连续观察比一张截图更可靠
建议连续观察 60 秒:
vmstat 1 60
重点关注:
- r:正在运行或等待 CPU 的任务数。长期明显高于 vCPU 数量,说明 CPU 队列拥挤。
- b:处于不可中断等待的任务数。持续不为 0,可能存在 I/O 阻塞。
- si、so:Swap 换入和换出。持续出现大量数值,可能表示内存压力较大。
- wa:I/O 等待比例。持续偏高时检查磁盘延迟。
- st:Steal Time。持续偏高时怀疑宿主机 CPU 争用。
查看 VPS 的 vCPU 数量:
nproc
五、检查磁盘延迟
安装 sysstat 后运行:
iostat -xz 1 60
重点查看 await、r_await、w_await 和 aqu-sz。与其套用固定阈值,不如比较同一台 VPS 在凌晨、白天和晚高峰的变化。
如果 VPS 自身读写量没有明显增加,但每天晚高峰的磁盘延迟都会明显升高,就可能存在共享存储争用。
六、Windows VPS 如何判断?
Windows 任务管理器通常没有直接对应 Linux %st 的指标,需要结合性能监视器和资源监视器判断。
1. 查看虚拟 CPU 等待
按 Win + R,输入 perfmon。如果系统提供 Hyper-V Hypervisor Virtual Processor,可以关注 CPU Wait Time Per Dispatch。它最接近虚拟 CPU 等待宿主机调度的概念。
找不到这个计数器,不代表母鸡没有超售,只表示客户机无法直接读取相关数据。
2. 查看 CPU 任务队列
在性能监视器中添加:
Processor → % Processor Time → _Total
System → Processor Queue Length
队列长期明显高于逻辑处理器数量,说明线程正在等待 CPU。但如果 CPU 本身接近 100%,也可能只是 VPS 内的程序太忙,不能单独据此认定宿主机超售。
3. 查看磁盘响应时间
按 Win + R,输入 resmon,进入“磁盘”页面,查看响应时间、磁盘队列长度以及具体读写进程。
也可以在性能监视器中添加:
PhysicalDisk → Avg. Disk sec/Read
PhysicalDisk → Avg. Disk sec/Write
PhysicalDisk → Current Disk Queue Length
计数器单位是秒:0.005 等于 5 毫秒,0.020 等于 20 毫秒,0.100 等于 100 毫秒。
七、怎样让结论更有说服力?
分别在凌晨、白天、晚高峰和实际卡顿时记录:
- CPU 使用率与任务队列;
- Linux 的
%st,或 Windows 可用的虚拟 CPU 等待指标; - 磁盘平均响应时间;
- 可用内存与换页活动;
- 网站或应用的实际响应时间。
如果业务负载相近,但每天晚高峰都反复出现 CPU 等待升高、任务队列变长、磁盘延迟增加和应用变慢,而到凌晨后又恢复正常,就有较强理由怀疑宿主机存在资源争用。
八、哪些现象不能单独证明超售?
- 某一秒
%st很高; - CPU 使用率达到 100%;
- Swap 或 Windows 页面文件使用了一部分;
- Linux 的空闲内存很少;
- 磁盘占用偶尔达到 100%;
- 一次测速或跑分不理想;
- Load Average 偶尔升高。
这些现象都可能由 VPS 自己的程序、系统更新、数据库、备份、网络或磁盘读写造成。
总结
从 VPS 内部,通常无法证明服务商究竟超售了多少倍。真正能够判断的是:自己的 VPS 是否正在因为宿主机 CPU、共享存储或其他资源争用而受到影响。
Linux 中,%st 是 CPU 争用最直接的提示;Windows 则需要结合虚拟 CPU 计数器、Processor Queue Length 和磁盘响应时间。最可靠的方法不是看一次截图,而是连续记录并比较不同时段的数据。