首页/数据/Redis 进阶速查/INFO cpu 与子进程 CPU
性能与排障129 条

INFO cpu 与子进程 CPU

INFO cpu 给出主进程与子进程的系统/用户态 CPU 累计值;子进程 CPU 高通常对应持久化重写与 fork 工作。

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

INFO cpu 是什么

INFO cpu 给出 Redis 主进程与后台子进程累计消耗的 CPU 秒数,分系统态与用户态两组。子进程两项主要由 RDB 保存、AOF 重写这类 fork 任务贡献;主进程两项反映命令处理与网络开销。注意它们是自进程启动以来的累计值,要得到使用率必须自己按时间做差值。

基本信息

查看redis-cli INFO cpu
主进程字段used_cpu_sys、used_cpu_user(累计秒)
子进程字段used_cpu_sys_children、used_cpu_user_children
主线程口径Redis 6.2 起另有 used_cpu_sys_main_thread、used_cpu_user_main_thread
字段性质累计值,不随时间窗口自动重置
配套观测INFO persistence、top、pidstat

典型使用场景

  • 排查延迟抖动:确认尖峰是否与子进程工作(fork、重写)同期出现
  • 判断是否打满单核:主线程 CPU 长期接近满载说明命令层已成瓶颈
  • 区分瓶颈类型:用户态高是命令重,系统态高是系统调用与网络开销重
  • 持久化影响评估:把重写期间的子进程 CPU 与延迟曲线对照
  • 容量评估:按分钟对累计值做差值,得出真实 CPU 占用率

最小示例

最小示例
redis-cli INFO cpu                       # 累计 CPU 秒数
redis-cli INFO persistence | grep -E 'rdb_bgsave_in_progress|aof_rewrite_in_progress|latest_fork_usec'
redis-cli INFO commandstats | grep -E 'cmdstat_(hgetall|keys|smembers)'   # 找重命令
redis-cli --latency-history -i 5         # 延迟随时间的变化
pidstat -p <redis_pid> 1 5               # 用系统工具看真实占用率

字段读法

字段含义异常信号
used_cpu_sys主进程累计系统态 CPU 秒与用户态比值高说明系统调用开销大
used_cpu_user主进程累计用户态 CPU 秒持续快速增长说明命令负担重
used_cpu_sys_children子进程累计系统态 CPU 秒明显增长说明后台持久化在跑
used_cpu_user_children子进程累计用户态 CPU 秒与 RDB/AOF 重写时间点对照看
两次采样的差值与间隔自己计算的使用率主线程长期接近单核满载即瓶颈信号
单看一次输出没有意义:这些都是只增不减的累计值,采集时同时记录时间戳,用相邻两点的差值除以间隔才是真实使用率。
命令执行依然是单线程:主线程打满一个核时再加核也帮不上忙,方向是拆分实例、分片或减少重命令。
子进程 CPU 升高不等于故障,它往往说明持久化正在正常工作;真正要关注的是它与延迟抖动、fork 耗时是否同期出现。

易错点

  • 把累计值当瞬时使用率上报:数值只增不减,监控曲线看起来像持续暴涨
  • 看到子进程 CPU 高就重启:可能只是后台保存在跑,先看 INFO persistence 与 fork 耗时
  • 忽略系统态占比:系统态高说明系统调用与网络开销重,优化重点不在命令本身
  • 以为加核就能提升吞吐:命令执行是单线程,主线程打满时先分片或减少重命令
  • 只看 INFO 不用系统工具:线程级细节和真实占用率要靠 top -H、pidstat 这类工具补上

数据来源与参考

  • Redis 官方文档:INFO cpu 字段
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌