| 常见性能问题 | 问题原因分类 | 问题原因举例 |
|---|---|---|
| 响应时间长 | 业务代码逻辑问题 | 循环调用、本地方法耗时、工具使用不当、可并行化的操作,却串行实现、日志输出随意、为了只获取少量信息,却使用大而全的查询接口 |
| 网络耗时 | 跨机房调用多、跨地域调用多、网卡流量打满 | |
| 基础组件问题 | 组件本身性能问题、配置不当,如连接池等 | |
| 外部依赖问题 | 下游依赖服务慢、DB慢查询、数据库达到读写QPS极限、Redis节点配置不足等 | |
| 单机吞吐上不去 | 资源瓶颈 | 线程池漏斗效应、连接池、下游依赖容量不足等 |
| 资源竞争 | 线程池滥用导致CPU切换、CPU热点(如序列化等)、IO等 | |
| 链路吞吐上不去 | 下游依赖瓶颈 | 如下游容量不足 |
| 链路放大倍数 | 如对于DB放大几千倍 | |
| 长尾耗时 | GC问题、IO问题、缓存命中率问题 | 如GC导致TP999高、与重IO机器混部署、缓存命中率低 |
| 冷启动耗时 | 懒加载、预热问题 | 初次启动响应超时 |
| 频繁GC | 内存泄露、JVM参数设置不合理 | 如大对象、连接未关闭、Threadlocal使用不合理等 |