单接口变慢和整个服务变慢,入口完全不是一回事
15:41,值班群里丢来一句话: “/order/confirm 超时了。”
Java
集中收录 Java 工程里最常见的排障文章,重点覆盖接口变慢、数据库等待、线程池、JVM 与线上问题排查。
如果你是带着一个具体问题进来的,这一页更适合先按现象和排查方向找文章。
15:41,值班群里丢来一句话: “/order/confirm 超时了。”
那晚先出问题的接口,是 /coupon/available/list。
这类 SQL 排查我见得最多的一种卡法,是 explain 已经看过,索引也不像完全走歪,可接口还是慢,团队一下子就僵在原地。
20:06,库存预占接口 POST /inventory/reserve 的 p95 从 160ms 抬到 1.6s,Hikari 获取连接 p95 很快冲到 520ms。
有一次晚高峰,值班群里 6 分钟之内进了 23 条告警。
接口容量预算常见的失败,不是因为没人算,而是每个人只算了自己手里的那一段。流量同学盯 QPS,应用同学盯 timeout,框架同学盯线程池,结果每个数字单看都说得过去,拼到一次高峰或一次下游抖动里,系统还是会排队、超时、重试连着来。
19:12,订单提交接口 POST /api/order/submit 的 p95 从 180ms 抬到 2.4s。
很多人学 Arthas,都是从命令表开始记: