greys线上调试代码

greys线上调试代码

软件的说明文档地址:https://github.com/oldmanpushcart/greys-anatomy/wiki/greys-pdf

文件位置:

>cd /usr/greys

如何获取pid:

>ps -ef|grep java 

然后从输出中找到你需要的Java进程

如进程号为7737

启动脚本:

>/usr/greys/greys.sh 7737

所有命令

help 查看命令的帮助文档,每个命令和参数都有很详细的说明

sc 查看JVM已加载的类信息

sm 查看已加载的方法信息

monitor 方法执行监控

trace 渲染方法内部调用路径,并输出方法路径上的每个节点上耗时

ptrace 强化版的trace命令。通过指定渲染路径,并可记录下路径中所有方法的入参、返值;与tt命令联动。

watch 方法执行数据观测

tt 方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测

stack 输出当前方法被调用的调用路径

js 支持使用JavaScript脚本;支持CommonJS部分规范模块化(BMD规范)

version 输出当前目标Java进程所加载的Greys版本号

quit 退出greys客户端

shutdown 关闭greys服务端

reset 重置增强类,将被greys增强过的类全部还原

session 查看当前会话

jvm 查看当前JVM的信息

以下以xm-shop为例

1.sc

#(1).展示每个方法的详细信息 

>sm -d *.MqttConfiguration getConsumer

#(2).展示MqttConfiguration这个类中的所有方法,可以用通配符*

>sm -d *MqttConfiguration *

2.monitor对匹配的类.方法的调用进行监控。

>monitor -c 5 *MachineLockServiceImpl dealOpenLockFeedback

3.(可以监控该方法下所有方法的调用情况只能一级,不能查看层级)

>trace *MachineLockServiceImpl dealOpenLockFeedback

4.ptrace命令

命令为trace命令的强化版,通过指定渲染路径来完成对方法执行路径的渲染过程

命令能主动搜索tracing-path-pattern所渲染的路径,渲染和统计整个调用链路上的所有性能开销和追踪调用链路。

>ptrace *MachineLockServiceImpl dealOpenLockFeedback --path=*lock*

5.watch命令

能方便的让你观察到指定方法的调用情况。能观察到的范围为:返回值、抛出异常、入参,通过编写OGNL表达式进行对应变量的查看

watch -b *Test printAddress '"params[0]="+params[0]'

>watch -b *MachineLockServiceImpl dealOpenLockFeedback '"params[0]="+params[0]'

>watch -f *MachineLockServiceImpl dealOpenLockFeedback -x 2

6.tt命令 

方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测

>tt -t *MachineLockServiceImpl dealOpenLockFeedback 

#找到上面输出的index,查看该次调用的详情

>tt -i 1001

#打印栈的情况

>jstack   *MachineLockServiceImpl dealOpenLockFeedback 

>tt -t *MachineLockServiceImpl dealOpenLockFeedback params[0].length==1

7.stack命令

很多时候我们都知道一个方法被执行,但这个方法被执行的路径非常多。或者你根本就不知道这个方法是从那里被执行了,

此时你需要的是stack命令。

>stack   *MachineLockServiceImpl dealOpenLockFeedback 

猜你喜欢

转载自blog.csdn.net/u011662320/article/details/87275787