【arthas】接口特别慢,怎么定位

跑一个接口,是同步操作,200条数据,跑了3分20秒。这让我手写都不会这么慢。

所以问题出现,怎样定位呢,

 

方法1:jvisualvm

坦白说,不太好用(不会用)

 

方法2: arthas

真的超级无敌好用(推荐这个)

比如有一个接口请求很慢,那么,排除网络什么的外部问题,定位到就是接口慢,怎样定位究竟是接口的哪个方法慢了呢?arthas能够提供的帮助真的是让人感动。

它就是可以让你一步一步去看,究竟是哪一步慢了

语法就是  trace com.xx.xx.xxxService xxx   (即 trace 类路径 方法名)

 

trace com.xx.xx.xxxService getVal  -n 50 --skipJDKMethod false "#cost>100"   ("#cost>100" 这个就是过滤耗时大于100ms的情况)

 

然后,回车,出现以下字样,表示就进入了一种监听状态

Press Q or Ctrl+C to abort.
Affect(class count: 1 , method count: 1) cost in 70 ms, listenerId: 6

 

这个时候,再去调用接口,它就会把方法里面一些耗时的方法打印出来

 

这样,我们就能够发现,调用了什么方法,分别耗时多少,然后找到耗时最高的,再进一步去跟踪。直到找到问题根源。

 

posted @ 2022-02-26 17:32  aaacarrot  阅读(800)  评论(0编辑  收藏  举报