--- title: 故障诊断流程规范 keywords: [故障诊断, 排查, 根因分析, RCA, 应急响应] summary: 生产环境故障的标准诊断流程、根因分析方法和文档规范 category: troubleshooting --- # 故障诊断流程规范 ## 应急响应流程 ### 1. 初步评估(5 分钟内) **关键问题**: - 影响范围:多少用户受影响? - 严重程度:P0(全站挂)/ P1(核心功能)/ P2(次要功能) - 开始时间:什么时候开始的? **立即行动**: - 通知相关人员 - 开启故障战室 - 记录时间线 ### 2. 快速止血(15-30 分钟) **优先级**:恢复服务 > 找根因 **常见止血手段**: - 回滚最近部署 - 重启服务 - 流量切换 - 降级非核心功能 **验证止血**: - 检查监控指标恢复 - 抽样验证用户功能 - 确认错误日志减少 ### 3. 根因分析 **信息收集**: - 错误日志(ELK/Kibana) - 监控指标(Grafana) - 慢查询日志 - 堆栈信息 - 最近变更记录 **分析方法**: - 5-Why 分析法 - 时间线对比(问题前后变化) - 相关性分析(哪些指标同时异常) ## 5-Why 分析法 **示例:API 超时故障** 1. **为什么 API 超时?** - 数据库查询慢 2. **为什么数据库查询慢?** - 索引失效 3. **为什么索引失效?** - 表数据量暴增,执行计划变更 4. **为什么表数据量暴增?** - 定时清理任务失败 5. **为什么清理任务失败?** - 磁盘空间不足,任务异常退出 **根因**:磁盘空间监控未配置告警 ## 故障报告模板 ### 1. 故障概要 - 发生时间: - 影响时长: - 影响范围: - 严重程度: ### 2. 故障现象 - 用户反馈: - 错误日志: - 监控截图: ### 3. 根本原因 - 直接原因: - 根本原因:(5-Why 分析) - 相关变更: ### 4. 解决方案 - 临时方案: - 长期方案: - 预防措施: ### 5. 时间线 ``` 10:00 - 用户反馈 API 超时 10:05 - 确认影响范围,通知团队 10:10 - 发现数据库慢查询 10:15 - 执行索引优化,服务恢复 10:30 - 根因分析完成 ``` ### 6. 改进措施 - 技术改进: - 流程改进: - 监控增强: ## 常见故障分类 ### 性能类 - 慢查询 - 内存溢出 - CPU 飙高 - 线程池耗尽 ### 可用性类 - 服务宕机 - 网络故障 - 依赖服务挂 - 数据库连接池满 ### 数据类 - 数据不一致 - 数据丢失 - 重复数据 ### 安全类 - 认证失败 - 权限绕过 - SQL 注入 - DDoS 攻击 ## 最佳实践 ### 日志规范 ```java // 关键操作记录请求 ID log.info("[{}] 开始处理支付请求: userId={}, amount={}", requestId, userId, amount); // 异常必须记录完整堆栈 log.error("[{}] 支付失败", requestId, e); ``` ### 监控指标 - **Golden Signals**:延迟、流量、错误率、饱和度 - **业务指标**:订单量、支付成功率 - **资源指标**:CPU、内存、磁盘、网络 ### 告警阈值 - 错误率 > 1% - P99 延迟 > 2s - 数据库连接池使用率 > 80% - 内存使用率 > 85%