服务在运行过程中出现突然延迟升高,是常见且影响严重的问题,下面详解如何解决@mikechen
初步确认与数据收集
观察监控指标:响应时间、吞吐量、并发数、错误率、CPU、内存、GC 指标(GC 次数、暂停时间)。

重点关注四条曲线的时间对齐关系:
接口 RT(P99 / P95);
GC Pause Time;
CPU 使用率;
活跃线程数;
然后,对比异常前后的变化趋势。
重点排查方向
垃圾回收(GC),查看 GC 日志与监控:频繁的 Full GC 或长时间的 GC 暂停会直接导致延迟升高。

关注 Old 区占用、晋升失败、内存碎片、GC 策略是否合适(CMS、G1 等)。
若为 GC 导致,调整堆大小、GC 策略、元空间/直接内存配置或优化对象分配/缓存策略。

线程与锁
线程堆栈抓取(jstack):排查线程阻塞、死锁、长时间等待的锁或同步方法、网络/IO 等阻塞调用。
关注线程池队列:线程池饱和或队列积压会导致请求排队或超时,需调整线程池大小或优化业务耗时操作。
CPU 与系统资源
检查 CPU 使用率、负载(top、iostat):高 CPU 可能为热点热点代码或频繁 GC。也需排查 I/O 饱和、上下文切换过多。
查看文件句柄、socket 数量、磁盘延迟和网络丢包等系统层面问题。
应用层面问题
新发布的代码回滚或审查:排查最近的代码变动、依赖升级或配置变更。
慢查询、热点数据、缓存失效或缓存穿透会突然增加后端压力。
诊断工具与方法
jstat、jmap、jstack、jcmd:用于查看堆使用、触发堆转储、线程快照与 GC 信息。

GC 日志解析工具(如 gcviewer)、性能分析器(YourKit、VisualVM、async-profiler):定位热点方法与分配热点。
分布式链路跟踪(Zipkin、Jaeger)与 APM(SkyWalking、Prometheus + Grafana):用于定位服务间调用延迟来源。
在线快照与采样:在不影响生产的前提下进行采样分析。
mikechen睿哥
10年+一线大厂架构实战经验,就职于阿里、淘宝等一线大厂,操盘多个亿级大厂核心项目。