主节点宕机那两分钟,依赖缓存的接口全返回 500,日志里刷满 RedisConnectionFailureException。日志里能对上时间点,这种反而好排。

缓存被当成强依赖,读不到就抛异常,既没有本地兜底也没有直连数据库的旁路,缓存这一层倒下时整条读链路跟着断。这一点先确认清楚,后面就不用反复试。

CONFIG SET timeout 200
CONFIG SET tcp-keepalive 60
# 客户端 readTimeout 设 200ms 走本地兜底

「缓存降级处理」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。偶发问题先统计频率,一小时几次和一天一次,查法完全不同。

改完顺手把文档补一句,省得下次自己重新推一遍。监控和日志的时间要对上,时区不一致会多绕很大一圈。

临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。

处理上按这个顺序:读缓存异常时降级查库 同时限并发保护数据库;把降级开关做成可配置 出问题能手动切过去;非核心数据返回默认值 别让整个页面直接白屏。

结果对不对很好判断,手动停掉 Redis,接口 P99 涨到 400 毫秒但不报错,页面还能打开。

作者 9823189