【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
这个时候,再去调用接口,它就会把方法里面一些耗时的方法打印出来
这样,我们就能够发现,调用了什么方法,分别耗时多少,然后找到耗时最高的,再进一步去跟踪。直到找到问题根源。