# 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