greys-anatomy是 个好东西!greys-anatomy是 个好东西!greys-anatomy是 个好东西!
greys-anatomy是什么自己看吧(不支持windows环境操作),原文网址:https://github.com/oldmanpushcart/greys-anatomy
场景:hello world上线后,由于种种可能 ,执行某个方法时,很久。。。这时在生产环境中排查是哪个方法或SQL导致时间过长,就不好办了。(可以考虑把正式的数据库网址放到本地程序去跑一跑)想查出来哪个方法耗时比较多,要做相关优化,greys-anatomy可以帮我们做得到。
模拟代码:
假设发出一个请求:xx/one/One,调用相关方法:
doGet方法调用Test.hello() -- > 查看hello方法内容:
再查看TestDao里的方法:
看到了TestDao用了线程模拟了查询时间慢。
把项目丢到tomcat上跑。。。启动tomcat,并用 ps -ef|grep tomcat 命令获取tomcat的pid:
进入gresy,执行命令: ./greys.sh 3458(3458是tomcat的PID):
开始查看方法的耗时:执行:ptrace -t -n 3 One doGet --path=cn*
-t :记录下渲染路径上所有方法的入参与返回值,记录下的返回值可以与tt
命令联动
-n 3: 查看次数3次
One:这个是类名
doGet:One类下的doGet方法
--path:要查看个路径下(包下)的类的方法执行时间,cn*也就是cn包下所有方法的执行时间,也可以指定具体的包下,如cn.test
具体查看:https://github.com/oldmanpushcart/greys-anatomy/wiki/greys-pdf#ptrace命令
效果图:
如上图所示,很明显就可以查出哪个方法执行耗时较多了,可以改代码了。