CPU steal%:你的VPS卡,可能不是配置不够,是邻居太吵

top里有个叫st(steal)的指标,很多人从来没注意过。小够讲清CPU steal是什么意思、多少算正常、超售的机器有什么表现,以及买VPS时怎么用它识别坑。

我是小够。今天讲一个top命令里最被忽视、但最能揭穿超售的指标:st,也就是CPU steal time。很多人VPS卡了就去升级配置,其实问题可能根本不在你这台机器,而在"邻居"。

steal是什么

VPS是虚拟机,一台物理宿主机上跑着几十台VPS,共享CPU。steal time的意思是:你的虚拟机想用CPU,但宿主机把CPU分给了别的虚拟机,你只能等。等的这段时间,就记为steal。

在top里按1看每个核心,或者直接看%Cpu(s)那行的st。正常机器,st长期是0.0,偶尔跳一下0.3、0.5,无所谓。但如果st长期在5%以上,甚至十几二十,你的机器就是在"排队等CPU",体感就是:SSH敲命令顿一下、网站偶尔转圈、定时任务延迟执行。

为什么steal能揭穿超售

超售的本质,是商家把一台物理机的CPU卖给了超过它承载能力的虚拟机数量。空载时大家相安无事,一到晚高峰邻居们一起发力,CPU就不够分了,steal集体飙升。

所以steal是超售的"照妖镜":

  • st长期<1%:宿主机不挤,商家良心(或者这台宿主机上邻居少)。
  • st 1-5%波动:轻度争抢,可以接受,低价VPS常见。
  • st长期>10%:宿主机明显超分,高峰期体验会打折。这种机器跑分可能还行(短时测试抢得到CPU),但日常用就是卡。
  • st动不动30%+:赶紧跑,退款政策就是为这种时候准备的。

注意一个细节:steal高的时候,top里你的CPU使用率可能很低。新手看到"use才20%怎么还卡",百思不得其解——因为瓶颈不在你的配额,在宿主机的调度。记住这个,下次排查少走弯路。

怎么看steal

top -bn1 | grep "Cpu(s)"

看st那一项。想长期观察,装个htop或者写个cron每分钟记一次,一天下来画个曲线,晚高峰有没有飙升一目了然。

还有个更直观的:vmstat 1,看st列,连续跳动的数字比top的瞬时值更有说服力。

steal和load average的关系

新手常把steal和load average搞混。load average是"排队等CPU的进程数",steal是"你的虚拟机等宿主机分CPU的时间"。两者经常一起涨,但含义不同:

  • load高、steal低:你自己的进程多,机器忙,加配置或优化应用能解决。
  • load低、steal高:你的进程没几个,但CPU被邻居占了,加配置没用,换机器才有用。
  • load高、steal高:两头堵,先换机器,再优化应用。

记住这个对照表,排查时先看steal,再决定是优化自己还是换商家,能省很多冤枉钱。

真实排查案例(示意)

小够见过的一个典型情况:1核2G的VPS跑博客,白天好好的,晚上8点开始网站转圈。top一看:us(用户进程)才15%,st 25%。结论:不是博客太吃资源,是宿主机晚上挤。解法:工单要求迁移到空闲宿主机,迁移后st降到1%以下,问题消失,一分钱没多花。

如果当时直接升级到2核4G,steal照样25%,钱白花了。所以升级配置之前,先看st,这是小够给所有新手的第一条铁律。

买VPS时怎么用它避坑

  1. 到手先观察24小时:别急着装一堆服务,先让机器空跑一天,steal曲线就是这台宿主机的"人品报告"。
  2. 晚高峰重点看:白天steal为0不代表晚上也为0,超售的机器都是晚上现原形。
  3. steal和价格一起看:年付10美元的机器steal 3%,那叫性价比;月付20美元的机器steal 10%,那叫冤大头。steal本身不是原罪,价格和steal不匹配才是。
  4. 换机房/换宿主机:有些商家支持工单申请迁移,steal长期高的机器,值得开一次工单试试。客服如果痛快给你换,说明商家心里有数;如果推三阻四,你也心里有数了。

一句话总结

st是邻居吵不吵的直接证据;长期>10%就别忍了,退款换一家。跑分看的是峰值,steal看的是日常——两个结合,才是完整的真相。下一篇讲Swap:小内存VPS加Swap,是救急还是饮鸩止渴?