首页/数据/Redis 进阶速查/CPU 高的排查路径
性能与排障129 条

CPU 高的排查路径

排查路径:INFO cpu 看主/子进程 → commandstats 找高耗时命令 → SLOWLOG 抽样 → 排查大键与批量任务 → 系统层看是否有 fork/子进程重写并发。

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

CPU 高的排查路径

CPU 高有一条固定排查路径:先用 INFO cpu 分清主进程与子进程用量,再用 commandstats 找耗时占比高的命令,配合 SLOWLOG 抽样,然后核对是否存在大键操作、批量任务、集中过期或持久化并发,最后到系统层确认是否有其他进程争抢。

基本信息

服务端证据INFO cpu、INFO commandstats、SLOWLOG
系统侧证据top、perf、mpstat 看进程内的热点
常见来源复杂命令、大键操作、集中过期、RDB/AOF 子进程、碎片整理
区分对象主进程用量与子进程用量必须分开看
相关开关hz、activedefrag、lazyfree 系列会影响 CPU 节奏

典型使用场景

  • 发布后回归:升级或改配置后 CPU 抬升,按路径逐层定位
  • 任务错峰:备份与统计类任务和业务高峰叠加
  • 大批量写入:管道或批量命令把主线程压满
  • 集中过期:键集中到期带来清理压力
  • 持久化并发:子进程重写与大内存实例的 fork 开销
  • 碎片整理:开启主动整理后 CPU 有额外成本

分层采集

分层采集
redis-cli INFO cpu                                    # 主进程与子进程用量分开看
redis-cli INFO commandstats                           # 找耗时占比高的命令
redis-cli SLOWLOG GET 10                              # 抽样看慢命令现场
redis-cli INFO stats | grep -E 'expired_keys|evicted_keys'  # 过期与淘汰开销
redis-cli INFO persistence | grep -E 'bgsave_in_progress|aof_rewrite_in_progress'  # 子进程是否在跑
redis-cli CONFIG GET activedefrag                     # 主动碎片整理开关
top -H -p $(pgrep -f redis-server | head -1)          # 系统侧看线程级 CPU

来源对照

来源特征处理方向
复杂命令单次耗时高、调用量不大命令改写或拆分
大键操作延迟与 CPU 同时上升拆分大键、改访问方式
集中过期expired_keys 激增过期时间加随机抖动
持久化子进程子进程 CPU 用量上升重写任务错峰执行
碎片整理CPU 缓慢抬升、碎片率下降按需开启或降低整理力度
主进程 CPU 高说明命令执行或定时任务吃紧;子进程 CPU 高则指向持久化与后台重写,两者的处理方式完全不同。
CPU 排查与延迟排查同源:把 CPU 曲线、命令统计和延迟事件放在同一时间轴上,才能决定该动哪一层。

易错点

  • 不和延迟、内存指标联动,仅凭 CPU 高就下结论并开始改配置
  • 把系统整体 CPU 使用率当成 Redis 的用量,混入其他进程的开销
  • 忽略子进程用量,把持久化的开销误判成命令问题
  • 开启碎片整理只看内存收益不看 CPU 成本,低峰期的稳定性被打破

数据来源与参考

  • Redis 官方文档:CPU 与性能排查
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌