天天看点

还在System.out+currentTimeMillis打印耗时,试试Arthas神器!

作者:玄明Hanko

#挑战30天在头条写日记#

如何分析一下自己的web项目的性能消耗,一般我们会在开始与结束加时间相减打印出消耗时间。这种方法侵入率太高了,如果想利用arthas整体调优一下自己web项目的性能点的话,可以使用以下的步骤或思路。(当然xrebel也是一个不错的选择)

还在System.out+currentTimeMillis打印耗时,试试Arthas神器!

step1:从入口跟踪

针对web项目,可以跟踪servlet类。DispatcherServlet是整个程序的入口。

trace org.springframework.web.servlet.DispatcherServlet *           

输入命令后,再在浏览器访问你的web应用,就会输出相应的信息,可以看到输入代码各类方法的耗时。也会有红包标出占比最大的方法。

还在System.out+currentTimeMillis打印耗时,试试Arthas神器!

根据结果我们可以进一步的跟踪,继续使用trace命令

trace org.springframework.web.servlet.DispatcherServlet doDispatch           
还在System.out+currentTimeMillis打印耗时,试试Arthas神器!

一步步的跟踪最后会定位到业务controller、service、dao各层。

step3:模拟请求

当定位到具体的业务方法后,就可以使用tt命令查看方法调用上下文信息

tt -t com.wdbyte.arthas.service.UserServiceImpl mysql           
还在System.out+currentTimeMillis打印耗时,试试Arthas神器!

通过tt -t 查看到index,然后通过index重复调用。也就是你不用从页面去触发这个方法的调用这样太耗时耗力了,可以通过tt直接来触发请求。

tt -i 1001 -p           
  • 最后通过tt -i 与 trace重复配合,定位出性能消耗

==============================================

如果文章对你有帮助,不要忘记加个关注、点个赞!

继续阅读