常见原因
| 分类 | 具体可能原因 |
|---|---|
| 🧮 CPU 计算型负载高 | 某批量任务、统计任务或导出任务在此时段执行,占满 CPU |
| 🔄 线程池耗尽 / Dubbo 阻塞 | 某接口执行慢导致请求堆积,线程被占用无法及时释放 |
| 💾 数据库慢查询 | SQL 查询执行缓慢导致后端线程阻塞,引发连锁反应 |
| 📦 GC 频繁 / Full GC | JVM 垃圾回收频繁,导致 Stop-the-World 时间过长 |
| 🔁 循环调用 / 死循环逻辑 | 业务逻辑缺陷引发高 CPU 消耗 |
排查建议
| 检查项 | 操作建议 |
|---|---|
| 1. top / htop 记录 | 查看当时 CPU 占用最高的进程/线程(可以结合 pidstat 或 arthas 查看线程堆栈) |
| 2. JVM GC 日志 | 检查是否存在 Full GC 频繁、单次 GC 耗时长 |
| 3. 数据库慢查询日志 | 检查当时是否有耗时 SQL 超过 5s |
| 4. 系统任务调度 | 查看当时是否点有定时任务、报表生成、库存同步等批量操作 |
| 5. 压测或请求量曲线 | 对照请求流量曲线,判断是否为突发高并发导致的瓶颈 |