服务接口全部正常,注册中心却把实例摘了,日志里 health 端点返回 status DOWN,details 里只有 redis 这一项是红的,其它指标都正常。日志里能对上时间点,这种反而好排。
默认健康检查把全部组件都算进总状态,Redis 抖动一次整体就 DOWN,注册中心只看总状态,直接把还能服务的实例摘掉,流量瞬间掉一半。这一点先确认清楚,后面就不用反复试。
management.endpoint.health.group.readiness.include=db curl -s http://127.0.0.1:8080/actuator/health/readiness
围绕「健康检查误摘实例」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。
日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。
处理上按这个顺序:先看 details 里到底是哪一个组件在报红,把总状态拖成了 DOWN;非核心依赖从就绪检查里排除,只留自身和数据库;存活检查只判断进程本身,别把外部依赖混进去。
结果对不对很好判断,Redis 抖动时 readiness 仍是 UP,实例不被摘除,业务接口照常返回,用户没有感知。
