首页/数据/Redis 进阶速查/系统工具速查:top/iostat/vmstat
性能与排障129 条

系统工具速查:top/iostat/vmstat

系统侧常用:top/htop 看 CPU 与进程、vmstat 看上下文切换与 swap、iostat 看磁盘与 fsync 压力,用于把 Redis 指标与系统事件对上。

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

系统工具速查

Redis 的延迟问题常常先体现在系统层面:CPU 线程占用、内存换页、磁盘写入压力、网络吞吐。把这些工具的时间窗口与 Redis 指标、延迟曲线对齐,才能判断尖峰是持久化、换页还是外部负载造成的,而不是凭感觉归因。

基本信息

CPU 与线程top -H -p 进程、pidstat -t -p 进程 1
内存与交换free -m、vmstat 1(重点看 si/so)
磁盘iostat -x 1(重点看 %util、await、写次数)
网络sar -n DEV 1、ss -s
采样时长至少覆盖一个完整的尖峰周期
关联对象INFO persistence 里的 fork 与重写时间点

典型使用场景

  • 延迟尖峰复盘:把延迟曲线与系统采样对齐,找出同期事件
  • 判断是否被换出:换入换出计数非零说明内存已经在换页
  • 持久化压力评估:磁盘利用率与等待时间高时写盘就是瓶颈
  • 线程级观察:确认是主线程还是后台线程在吃 CPU
  • 上架验收:新机器先跑一轮基线采样,作为后续对比的参照

最小示例

最小示例
top -H -p <redis_pid>         # 线程级 CPU 占用
vmstat 1 30                   # 内存换页与上下文切换,连续采样 30 次
iostat -x 1 30                # 磁盘利用率与等待时间
pidstat -t -p <redis_pid> 1   # 线程级上下文切换
sar -n DEV 1 10               # 网卡吞吐与错误计数
free -m                       # 内存与 swap 使用情况

工具对照

工具看什么异常信号
top -H线程级 CPU某线程长期接近单核满载
vmstat换页与上下文切换换入换出非零说明发生换页,延迟必抖
iostat -x磁盘利用率与等待时间利用率长期接近 100% 说明磁盘打满
sar -n DEV网卡吞吐与错误接近链路上限或错误计数增长
free -m内存与 swap 使用swap 被占用在低延迟场景属于严重信号
采样要覆盖完整窗口:只跑几秒钟很难命中持久化与批任务的周期,结论容易失真。
命令执行是单线程:进程 CPU 到单核满载就是瓶颈信号,此时系统还有空闲核也帮不上忙,方向是减少重命令或分片。
swap 是低延迟的头号杀手:被换出的页重新载入会带来毫秒级停顿,宁可限制内存使用,也不要让实例被换出。

易错点

  • 只看 Redis 指标不看系统数据:延迟尖峰与磁盘、换页的对应关系只能靠猜
  • 采样时长太短:覆盖不到持久化与批任务周期,容易得出相反结论
  • 忽略 swap:换页存在时任何命令优化都难以改善延迟,先解决内存再谈调优
  • 把磁盘利用率高直接归结为磁盘故障:持久化策略本身就会推高写压力,要结合策略判断
  • 用默认视图看多线程进程:不加线程参数只能看到进程汇总,线程分工看不清

数据来源与参考

  • Redis 官方文档:系统级排查工具
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌