上线前要确认什么
预检项包括:内存水位与余量、慢命令基线、大键扫描、连接上限与内核参数、持久化状态、监控告警就绪、压测报告归档。预检要在与生产同规格的环境做,结论才有迁移价值;走形式不留档的预检,复盘时等于没做。
基本信息
| 资源类 | 内存水位、连接上限、内核参数 |
|---|---|
| 数据类 | 大键扫描、慢日志基线 |
| 体系类 | 监控告警就绪与压测报告 |
| 环境要求 | 与生产同规格 |
典型使用场景
- 新实例上线前的容量与配置确认
- 版本升级前的兼容性与性能基线采集
- 大促或活动前的余量确认
- 新业务接入前的键规模与访问模式评估
- 变更窗口开启前的最后一道检查
预检命令清单
预检命令清单
redis-cli INFO memory | grep -E 'used_memory_human|maxmemory_human'
redis-cli CONFIG GET maxclients # 连接上限,与内核句柄配置核对
redis-cli --memkeys -i 0.1 # 大键扫描,按内存口径排名
redis-cli SLOWLOG GET 10 # 慢日志基线
redis-cli INFO persistence | grep -E 'rdb_last_bgsave_status|aof_last_write_status'
redis-cli INFO replication | grep -E 'role|master_link_status'
ulimit -n # 进程文件描述符上限预检项与后果
| 预检项 | 检查内容 | 不通过的后果 |
|---|---|---|
| 内存水位 | 相对 maxmemory 的余量 | 上线后很快触发淘汰 |
| 连接上限 | maxclients 与 ulimit 是否对齐 | 高并发时连接被拒 |
| 大键扫描 | 是否存在异常大的键 | 阻塞与内存突刺风险 |
| 慢日志基线 | 现有慢命令的分布 | 无基线则无法判断变更后的退化 |
| 持久化状态 | 最近一次落盘是否成功 | 故障时没有可恢复的数据点 |
| 监控告警 | 关键指标是否已配置并验证 | 出问题无人知晓 |
| 压测报告 | 是否归档并写明方法 | 容量结论无据可依 |
内核相关项容易被漏掉:TCP backlog、文件描述符上限、透明大页等设置会影响高并发下的表现,而它们都不在 Redis 的配置文件里。
预检清单要有明确的不通过处置规则:是阻断上线还是登记为已知风险,事先约定清楚,否则预检结果没人真正采信。
每次预检的结果要与上一次的基线对比,趋势比绝对值更能说明问题,例如大键数量缓慢增加就是一个需要提前处理的信号。