【视频笔记】Java场景题 接口变慢应该怎么排查?

接口变慢怎么排查

 是单个接口慢,还是整个系统都慢,跟中毒似的,全系统都慢,大概率是公共组件或数据库出问题了。

比如:中间件炸了,主库顶不住了,限流策略忘了配

排查流程

1、先看普罗米修斯,响应时间、错误率、QPS波动情况,先判断是不是全局性的问题

2、使用skywalking这种链路追踪工具把整个链路拉一遍,看下到底是哪一环出问题,是调用链里哪个服务拖了后腿,是数据库查询慢了,还是rpc那边半天不回。

3、网络如果没问题,ping正常、traceroute没丢包,那就是机房没问题

4、看看代码逻辑,缓存、数据库这些下游是不是正常,同步调用的嵌套,串行调用多个微服务

5、看中间件,比如缓存服务器是不是碰到大key了,一下分好几M,或者缓存穿透,压根没命中,全打到数据库上;或者缓存雪崩,一下全过期,后端直接挂了;

6、往数据库看,打开慢sql,找找有没有扫描全表,不走索引的sql,用explain分析一下sql的执行计划,有没有那种查数据锁了全表的操作;同时看下数据库的连接数,cpu占比,是否主从同步延迟大

7、看服务器,top看cpu有没有打满,jstack看是不是那个线程死循环,锁竞争阻塞住了,再配合jstack看gc是不是太频繁,有没有堆爆;看看日志有没有把磁盘打满

8、看看jvm配置,是不是用的垃圾收集器不合适,是不是分配的堆太小

 

参考:Java场景题 接口变慢应该怎么排查?_哔哩哔哩_bilibili

posted @ 2025-06-27 17:20  fanblog  阅读(128)  评论(0)    收藏  举报