136 lines
3.5 KiB
Markdown
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
|