节点侧要看什么
节点侧要采集:CPU 使用率(含虚拟化环境下的 steal)、负载、可用内存与 swap、磁盘吞吐与 await、网络重传与丢包、文件句柄与连接数。这些指标要与 Redis 自身指标按时间轴对齐,才能在延迟尖峰出现时判断是 Redis 内部问题还是运行环境问题。
基本信息
| 采集范围 | CPU、内存、磁盘、网络、句柄 |
|---|---|
| 对齐要求 | 与 Redis 指标使用统一时间基准 |
| 关键项 | steal 与网络重传 |
| 常用工具 | vmstat / iostat / sar / top / ss |
典型使用场景
- Redis 延迟尖峰,判断是否由宿主机或邻接负载引起
- 虚拟化环境排查:steal 高说明 CPU 被宿主机抢占
- 持久化期间磁盘 await 升高,解释落盘带来的抖动
- 网络重传升高,判断是否链路或拥塞问题
- 句柄与连接数接近上限,提前发现连接瓶颈
采集命令
采集命令
vmstat 1 # 上下文切换、swap、运行队列
# 注意:写命令延迟也会被磁盘 await 影响,两者要对齐时间轴看
iostat -x 1 # 磁盘利用率与平均等待 await
sar -n ETCP 1 # 网络重传与连接统计
top -H -p $(pgrep -f redis-server | head -1) # 线程级 CPU 分布
ss -s # 套接字总量统计
ulimit -n # 当前进程的文件描述符上限指标与异常表现
| 指标 | 含义 | 异常表现 |
|---|---|---|
| steal 占比 | 被宿主机抢占的 CPU 时间 | 偏高说明受同宿主其他负载影响 |
| 运行队列与负载 | 可运行进程数量 | 持续高于 CPU 核数说明在排队 |
| swap 换入换出 | 内存被换到磁盘的速率 | 非零意味着内存已被压到磁盘 |
| 磁盘 await | I/O 平均等待时间 | 升高会传导为写命令延迟 |
| TCP 重传率 | 重传段占总段的比例 | 升高多为链路或拥塞问题 |
| 句柄使用率 | 已用句柄与上限之比 | 接近上限时新连接开始失败 |
采集项里必须包含 steal。虚拟化环境下这一项能直接解释 Redis 自己不忙但延迟很高的现象,缺了它只能靠猜。
节点指标与 Redis 指标必须使用统一的时间基准。时钟不同步会让看起来对齐的曲线实际错位,得出的因果结论也是错的。
采样时长要覆盖延迟峰值的出现窗口。短时间采样容易完全错过尖峰,结论变成一切正常。