新增 6 个知识库文档,用于测试 L0+L1 混合检索功能: API 类: - payment-errors.md - 支付网关错误码定义 领域知识类: - spring-ai-tool-best-practices.md - Spring AI 工具定义最佳实践 基础设施类: - redis-config.md - Redis 缓存配置指南 - mysql-connection-pool.md - MySQL 连接池配置 - flyway-best-practices.md - Flyway 数据库迁移最佳实践 故障排查类: - fault-diagnosis-process.md - 故障诊断流程规范 所有文档均包含: - 标准 frontmatter 元数据 (title, keywords, summary, category) - 实用配置示例和代码片段 - 支持 L0 精确匹配的关键词
158 lines
3.0 KiB
Markdown
158 lines
3.0 KiB
Markdown
---
|
||
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%
|