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