JVM 线程 RUNNABLE 状态排查陷阱:load 高 CPU 低场景深度分析
摘要: 本文记录了一次线上订单服务性能问题的排查过程。现象表现为CPU使用率仅25%,但p99响应时间从30ms飙升至823ms。通过top、jstack、perf等工具组合分析,发现大量线程处于RUNNABLE状态但实际阻塞在Socket I/O等待,根源在于新版代码使用默认HttpClient(单连接)调用外部评分服务,导致高并发时连接争用。修复方案包括:自定义连接池、设置超时和熔断机制,最终p99响应时间降至42ms。关键认知包括: JVM的RUNNABLE状态可能包含I/O等待; 默认HttpCli
Ai拆代码的曹操2026-07-03 22:31:28