从日志定位问题的方法
Redis 日志由 logfile 指定路径(未配置时输出到标准输出,容器环境里很常见),按时间线记录启动、持久化、主从复制与各类告警。排查时先看带警告标记的行,再回溯上下文,然后把日志时间与监控指标对齐,才能还原完整的事件顺序。
基本信息
| 位置 | logfile 配置的路径,未配置则输出到标准输出 |
|---|---|
| 重点内容 | 告警行、持久化事件、复制状态变化 |
| 日志级别 | loglevel 可选 debug、verbose、notice、warning |
| 轮转 | Redis 自身不做日志轮转,需要系统侧配合 |
| 使用方式 | 按时间定位事件,再与指标和变更记录对齐 |
典型使用场景
- 启动异常:端口占用、配置项无效、内存相关警告都在启动阶段出现
- 持久化问题:保存失败与后台重写的起止都有明确记录
- 复制异常:全量同步、断连与重连在日志里按顺序出现
- 内存告警:启动时关于内存超额提交与透明大页的提示
- 性能事件:把后台任务时间点与延迟曲线对照
- 变更追溯:配置改动时间与变更记录互相印证
定位手法
定位手法
redis-cli CONFIG GET logfile # 日志输出位置(空表示标准输出)
redis-cli CONFIG GET loglevel # 当前日志级别
grep -E 'WARNING|^[0-9]+:M ' /var/log/redis/redis-server.log | tail -20 # 先看告警行
grep -E 'Background saving|Ready to accept|REPLICA sync' /var/log/redis/redis-server.log | tail # 关键状态行
tail -f /var/log/redis/redis-server.log # 排查期临时跟踪现场
redis-cli INFO persistence # 与日志中的持久化事件对照
redis-cli INFO replication # 与日志中的复制事件对照关键日志行
| 日志内容 | 含义 | 排查方向 |
|---|---|---|
| Ready to accept connections | 实例启动完成 | 确认启动时间与配置加载结果 |
| WARNING overcommit_memory is set to 0 | 内存超额提交未开启 | 后台保存可能失败或被拒绝 |
| Background saving started | RDB 保存开始 | 与延迟尖峰时间点对照 |
| REPLICA sync started | 开始主从同步 | 判断是全量还是部分重同步 |
| Can't save in background | 后台保存失败 | 检查磁盘空间与权限 |
日志和指标要成对使用:日志给出事件与原因,指标给出数量与趋势,只看一边很难确认影响范围。
Redis 不负责日志轮转:长期运行要配置系统侧的轮转策略,否则磁盘被慢慢写满,排查时反而制造新的故障。