遇到 VPS 卡顿,大多数人都是带宽不够就加带宽,内存不够就加内存,换个更高的套餐,觉得问题一定能解决。我当时也是这么想的,结果升了两次配置,依旧会出现不定时的卡顿。
后来在一次排查中,我盯着 top 命令的输出看了很久,注意到一个平时完全忽略的指标:steal。那一刻才算真正搞清楚:VPS 配置不低还是卡,很多时候根本不是带宽的锅,问题出在 CPU。
说得更准确一点,是共享 CPU 的分配机制,以及服务商的超卖程度。
VPS 的 CPU 其实不是你一个人在用
很多人挑 VPS 的时候,看到 4 核 CPU、8G 内存 就觉得够用了,逻辑上说得通。但有一个细节,套餐页面基本不会主动解释 4 核指的是 vCPU,也就是虚拟 CPU,不是物理核心。
这两者的差距,比你想象的要大。
物理机是怎么变成一堆 VPS 的
服务商买来一台高配物理服务器,比如 64 核、256G 内存,然后用虚拟化技术把它切成几十甚至上百份,每份单独出售,这就是 VPS 的底层逻辑。
而你买到的那台 4 核 VPS,本质上是这台物理机切出来的一个片段。
问题就在这里:物理机只有 64 个真实核心,但服务商可以切出远超 64 核的 vCPU 总量对外销售。每个用户都以为自己有 4 个专属核心,实际上大家都在排队共用同一批物理核心。

时间片竞争是什么意思
CPU 的工作方式是轮流分配时间,每个进程获得一小段时间来执行,这段时间叫做时间片。正常情况下,你的 VPS 进程需要 CPU 的时候,系统会把时间片分给它,运行完再切到下一个。
但在高度共享的环境里,同一批物理核心上同时跑着几十台 VPS,每台 VPS 里面还有自己的进程在跑。当大家同时需要 CPU 的时候,你的进程就只能等,等别人的时间片用完,才轮到你。
这个“等”的过程,就是卡顿的起点。
等待时间短,你感觉不到;等待时间一长,延迟上来了,响应慢了,你就开始觉得 VPS 卡。而这背后,配置数字完全没变,内存够,带宽够,就是 CPU 在排队。
CPU 被“偷走”了,你却不知道
发现这个问题之前,我对 top 命令的使用习惯和大多数人一样,只盯着 CPU 使用率和内存占用,看完觉得没问题就关掉。直到一次偶然,才注意到 CPU 那一行右边还有个指标:%st。
这个 st,全称是 Steal Time,中文可以理解成“被偷走的 CPU 时间”。
什么叫 CPU 被偷走
你的 VPS 进程想用 CPU,但物理核心正在处理同一台宿主机上其他虚拟机的任务,只能等。这段等待的时间,操作系统会如实记录下来,就是 steal。
打个比方:你在一间共享办公室租了一张桌子,但实际上这张桌子同时租给了好几个人。你过来要用的时候,发现别人还没走,你只能站在旁边等。那段等待的时间,就是 steal。
桌子没坏,你的电脑没坏,但你就是没法工作。VPS 卡顿的逻辑,就是这样。
steal 高了,会有什么症状
steal 的影响是直接的,不需要什么专业知识才能感受到:
- 执行命令有明显延迟,敲下去要等一两秒才有反应
- 跑任务的时候 CPU 使用率看起来不高,但进度就是慢
- 并发一上来,整个机器开始抖——响应时间飙升,严重的直接超时报错
- 晚高峰比白天明显,因为同一台宿主机上的其他用户也在用
这也是为什么有人觉得 VPS 早上还好好的,下午就卡死了。其实这不是 VPS 出故障了,是高峰期大家都在抢 CPU,steal 值蹿上去了,导致 VPS 响应你的请求慢了。
怎么查自己的 steal 是多少
在你的 VPS 上直接跑这条命令:
top
看第三行 CPU 信息,找 %st 这个字段。判断标准很简单:
- 低于 5%:正常,基本感觉不到影响
- 5% 到 15%:偏高,高峰期会有体感
- 超过 15%:超卖严重,体验会很差
如果你想多观察一段时间,用这条命令更直观:
vmstat 1 5
输出结果里看最右边的 st 列,连续几次采样都偏高,基本可以确认是宿主机超卖的问题。
VPS 配置不低还是卡?该怎么解决?
知道问题出在哪,下一步就是怎么绕开它。说实话,steal 这件事在普通 VPS 上很难完全消除,但可以通过选择合适的产品类型,把影响压到你感觉不到的程度。
大方向有三条路,按成本从低到高排。
选口碑好、规则透明的服务商
最低成本的解法,不是换产品类型,而是换服务商。
超卖这件事,服务商自己心里有数,只是不会主动说。运营多年、用户基数大的老牌服务商,超卖程度通常比那些小厂好得多,因为他们更在意长期口碑,也有足够的硬件规模来分摊负载。
以搬瓦工为例,它在 Terms of Service 里明确标注 CPU 的调用权限比例,让你知道自己实际能用多少资源,而不是给你一个模糊的 vCPU 数量。另外实测搬瓦工 VPS 的 steal 值都偏低。
当然,透明不等于零超卖,只是相对可控。
升一级,选 VDS 产品
如果你试过换服务商还是不满意,或者本身业务对 CPU 比较敏感(例如游戏服务器等),那就该考虑往上走一档了:VDS(Virtual Dedicated Server,虚拟专用服务器)。
VDS 和普通 VPS 最大的区别,在于 CPU 的分配方式。普通 VPS 的 vCPU 是共享时间片竞争的,VDS 则是给你划定专属的物理核心,或者至少保证一定比例的独占资源。
以 Vultr 为例,独享 CPU(Dedicated CPU)系列,CPU 资源隔离做得比较彻底,适合跑高并发或者对延迟敏感的应用。界面简洁,按小时计费,灵活性高
虽然 VDS 比同配置的普通 VPS 贵一些,但能解决卡顿问题,最后的效率反而更高。
再往上,选择真实的物理机
VDS 已经非常接近独立服务器了,但是性能切分终究会导致性能损失。如果你的项目体量已经比较大,对资源稳定性要求极高,那答案就只有一个:独立物理服务器。
物理服务器没有虚拟化层,CPU、内存、磁盘全部独占,不存在 steal,不存在超卖,性能就是硬件本身的上限。代价是价格更高,通常也需要一定的自运维能力。
InterServer 和 RAKsmart 都提供这类产品:
- InterServer 虽然只有美国机房,但是价格相对稳定,长期使用的性价比不错
- RAKsmart 的优势是机房覆盖广,包括香港、洛杉矶等对国内延迟友好的节点
需要说明的是,这类产品性能上已经非常接近独立服务器,但因为底层还是经过切分,和真正的裸金属相比依然有细微差距。不过对绝大多数使用场景来说,这个差距感知不到。
三种产品怎么选
| 需求 | 推荐方向 |
|---|---|
| 预算有限,普通博客、官网建站 | 换口碑好的服务商,例如搬瓦工等 |
| CPU 稳定性有要求,跑服务/高并发 | VDS,例如看 Vultr 的 Dedicated CPU |
| 大型项目,不能接受任何资源波动 | 独立物理服务器,看 InterServer、RAKsmart |
总结
其实 VPS 配置不低还是卡的原因,大部分情况下和带宽、内存没什么关系。真正的问题出在 CPU 的分配机制上:你买到的 vCPU 不是独占的,多台 VPS 争抢导致 steal 值高。
排查路径很简单:先跑 top 看 %st,低于 5% 正常,超过 15% 基本可以断定是超卖严重。确认问题之后再决定下一步:换服务商、升 VDS,还是直接上物理机,按自己的业务需求和预算选。
常见问题解答(FAQ)
Q1:steal 偶尔偏高,但平时正常,需要换机器吗?
不一定。偶发性偏高通常是宿主机上某个邻居在跑高负载任务,过一段时间会自己恢复。真正需要警惕的是持续偏高,或者每天晚高峰必然飙升。
Q2:OpenVZ 和 KVM 虚拟化,哪个 steal 更严重?
OpenVZ 的资源隔离相对弱,服务商在 CPU 调度上的空间更大,超卖起来更没有顾虑。KVM 在隔离机制上更完善一些,不代表不会超卖,但相比之下更可控。
Q3:VDS 和普通 VPS 的价格差多少?
同配置下大概贵 30% 到一倍,取决于服务商和节点。但如果你因为 steal 问题已经把 VPS 升过一两档配置,算下来直接买 VDS 不一定更贵,而且从根本上解决了问题。
Q4:我怎么知道服务商有没有严重超卖,买之前能判断吗?
买之前能做的有限,但有几个参考维度:看服务商是否公开 CPU 分配规则、套餐里有没有注明资源保证比例、社区论坛里有没有集中反映卡顿的帖子。
Q5:物理服务器真的有必要吗,VDS 不够用吗?
对大多数人来说,VDS 已经完全够用了。物理服务器的适用场景是大型数据库、实时高并发、或者对性能一致性有极端要求的业务。普通建站、小规模服务,VDS 绰绰有余。









