Files
2026-04-30 11:19:46 +08:00

136 lines
3.5 KiB
Markdown

# CPU使用率过高告警处理方案
## 告警名称
- **告警名**: `HighCPUUsage`
- **告警级别**: 严重
- **触发条件**: CPU使用率持续5分钟超过80%
## 问题描述
当服务器或容器的CPU使用率持续超过80%时,可能导致:
- 应用响应变慢
- 请求超时增加
- 系统负载过高
- 可能触发雪崩效应
## 排查步骤
### 步骤1: 获取当前时间
**工具**: `get_current_time`
**目的**: 确定告警发生的时间范围,用于后续日志查询
### 步骤2: 查询系统日志
**工具**: `query_logs`
**参数要求**:
- **地域**: `ap-guangzhou` (广州)
- **日志主题**: `system-metrics`
- **时间范围**: 最近30分钟
- **查询条件**: `level:ERROR OR cpu_usage:>80`
**查询示例**:
```
地域: ap-guangzhou
日志主题: system-metrics
时间范围: 2024-01-20 14:00:00 到 2024-01-20 14:30:00
查询语句: cpu_usage > 80 AND service_name:*
```
### 步骤3: 分析CPU消耗进程
查看日志中的进程信息,重点关注:
- 进程名称和PID
- CPU占用百分比
- 进程启动时间
- 进程所属服务
### 步骤4: 查询应用日志
**工具**: `query_logs`
**参数要求**:
- **地域**: `ap-guangzhou`
- **日志主题**: `application-logs`
- **时间范围**: 与告警时间一致
- **查询条件**: `level:ERROR OR level:WARN`
## 常见原因分析
### 原因1: 死循环或无限递归
**特征**:
- 单个进程CPU占用接近100%
- 应用日志中有大量重复的错误堆栈
- 内存使用也可能同步增长
**处理方案**:
1. 立即重启受影响的服务实例
2. 查看应用日志定位代码问题
3. 回滚到上一个稳定版本
4. 通知开发团队修复代码bug
### 原因2: 流量突增
**特征**:
- 多个进程CPU使用率均匀升高
- 请求量明显增加
- 响应时间变长但无明显错误
**处理方案**:
1. 检查是否有营销活动或突发流量
2. 启动自动扩容机制
3. 如果是恶意流量,启用限流策略
4. 监控扩容后的CPU使用率
### 原因3: 定时任务重叠执行
**特征**:
- CPU使用率周期性升高
- 特定时间点出现
- 日志中有定时任务执行记录
**处理方案**:
1. 检查定时任务配置
2. 调整任务执行时间,避免重叠
3. 优化任务执行逻辑
4. 增加任务执行互斥锁
### 原因4: 数据库查询慢
**特征**:
- 应用CPU高,但实际业务逻辑简单
- 日志中有慢查询记录
- 数据库连接池占用高
**处理方案**:
1. 查询慢SQL日志
2. 优化SQL语句或添加索引
3. 检查是否有全表扫描
4. 考虑增加缓存层
## 紧急处理措施
### 立即操作(5分钟内)
1. **扩容**: 如果是流量问题,立即增加实例数量
2. **限流**: 如果怀疑恶意流量,启用限流规则
3. **重启**: 如果是单个实例问题,重启该实例
### 短期措施(30分钟内)
1. 分析日志找出根本原因
2. 如果是代码问题,准备回滚
3. 如果是配置问题,调整配置
4. 持续监控CPU使用率变化
### 长期优化
1. 代码性能优化
2. 增加监控告警阈值
3. 完善自动扩缩容策略
4. 定期进行压力测试
## 验证步骤
1. 确认CPU使用率降到正常水平(<60%)
2. 检查应用响应时间恢复正常
3. 确认无新的错误日志产生
4. 观察30分钟确保问题不再复现
## 相关告警
- `HighMemoryUsage`: 内存使用率过高
- `HighLoadAverage`: 系统负载过高
- `SlowResponse`: 响应时间过长
## 联系方式
- **运维团队**: ops-team@company.com
- **开发团队**: dev-team@company.com
- **紧急电话**: 400-xxx-xxxx