首页/数据/Redis 进阶速查/CPU steal 与虚拟化延迟
性能与排障129 条

CPU steal 与虚拟化延迟

steal 表示 CPU 被宿主机其他虚拟机抢占的时间;steal 高时 Redis 延迟尖峰与自身负载无关,需要平台侧排查。

Redis 进阶速查数据更新于 2026-10-13

steal 是什么

steal 表示 CPU 时间被宿主机上的其他虚拟机抢占,本机拿不到物理核心的时间片,这是虚拟化环境特有的指标。Linux 上用 top 的 %st 列或 vmstat 的 st 列观察。steal 偏高时 Redis 表现出的延迟尖峰与自身负载无关:命令处理变慢、定时任务被推迟、客户端看到的往返时间抖动,而实例的 CPU 使用率看起来并不高。

基本信息

查看方式top 的 %st 列、vmstat 的 st 列、mpstat 分核心
含义被宿主机抢占、没能拿到物理 CPU 的时间占比
典型表现延迟尖峰与自身负载无关,CPU 使用率却不高
处置方向平台侧反馈与资源调整,换规格或错峰部署
配套排查同时看宿主的资源争抢与实例自身的排队情况

典型使用场景

  • 云主机延迟排查:实例侧指标全正常但延迟波动,steal 是第一批要排除的变量
  • 共享宿主环境:同宿主其他租户突发负载时会连带受影响
  • 定时任务抖动:后台任务被推迟,过期清理与超时检测变得不规律
  • 规格选型:不同规格与宿主类型的 steal 表现差异明显
  • 容量评估:长期处于高 steal 的实例,实测容量不能按纸面规格算

观测方法

观测方法
vmstat 1                           # 每行的 st 列即 steal 占比
top -b -n 1 | head -5              # 顶部汇总行的 %st 列
mpstat -P ALL 1 3                  # 分核心观察各核的 steal 与空闲
redis-cli --latency-history -i 5   # 延迟波动是否与 steal 上升同期

指标读法

指标含义异常信号
st(vmstat)被宿主抢占的 CPU 时间占比持续非零且与延迟同期上升
%st(top)同上,按全局汇总平时接近零,突发抬升要留记录
%idle空闲比例空闲高而延迟差时优先怀疑外部因素
运行队列长度等待 CPU 的任务数自身排队与外部抢占要分开判断
共享宿主上的偶发毛刺,steal 是常见的解释变量;把它与延迟时间序列叠在一起看,比单次取值有效得多。
把 steal 抖动当成 Redis 问题排查,方向会一路跑偏:改配置、调参数都无效,最后仍要回到平台侧解决资源争抢。

易错点

  • 把 steal 抖动当 Redis 问题:排查方向跑偏,配置改了一轮也没有效果
  • 只看 CPU 使用率不看 st 列:使用率不高就以为实例很闲,忽略被抢占的部分
  • 不核对云主机规格与宿主情况:长期忍受资源争抢,容量规划建立在错误假设上
  • 用单次采样下结论:steal 本身是波动的,需要时间序列并与延迟对齐

数据来源与参考

  • Redis 官方实践:虚拟化排查
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌