已采纳
回答正文
回复
讨论正文
该问题的正文与回答。
【背景】 我在 Linux(Ubuntu 22.04 / kernel 5.15)上跑一批 Java gRPC 微服务,单 Pod 并发连接 2000+,业务方偶尔报"接口偶发变慢",但应用侧 trace 里 handler 耗时看着正常。我怀疑延迟其实花在内核 TCP 段(队列、重传、softirq 调度)而不是业务代码里,但手头没有能按连接拆开时间的工具。
【现象】 用应用内埋点(micrometer 记 handler 耗时)和客户端 RTT 做差,能算出一个"非 handler 时间",P99 时这个差值能到 30~60ms。但拆不开它到底是网络传输、内核排队/重传、还是 GC/线程调度造成的。tcpdump 只能看到有没有重传,看不到时间分布,也对应不到具体是哪一段。
【已尝试的排查】
【期望得到的答案形态】