Files
zhuyongxin 3956426c97 docs(knowledge): 添加测试知识库文档
新增 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 精确匹配的关键词
2026-06-24 16:19:10 +08:00

158 lines
3.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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%