Greys介绍
greys-anatomy是一个Java线上诊断工具,取名来自美剧<实习医生格雷>,由菜鸟-杜琨同学开发维护。比我们常用的脚本工具btrace提供更多的功能,greys采用了命令式诊断。
安装greys
curl -sLk http://ompc.oss.aliyuncs.com/greys/install.sh|sh
或者
下载 zip包 ./install_local.sh
greys启动命令
./greys <PID>[@IP:PORT]
会话与任务
Greys是一个C/S架构的程序,所以当Client访问到Server时,Server会维护一个session(会话),以及session的心跳、超时机制。事务(Tx)机制则是建立在session的基础上,所有的命令交互都会创建一个事务,并且产生对应的队列进行输出缓冲。
重要命令
命令 | 说明 |
---|---|
help | 查看命令的帮助文档,每个命令和参数都有很详细的说明 |
sc | 查看JVM已加载的类信息 |
sm | 查看已加载的方法信息 |
monitor | 方法执行监控 |
trace | 渲染方法内部调用路径,并输出方法路径上的每个节点上耗时 |
ptrace | 强化版的trace 命令。通过指定渲染路径,并可记录下路径中所有方法的入参、返值;与tt 命令联动。 |
watch | 方法执行数据观测 |
tt | 方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测 |
[stack | 输出当前方法被调用的调用路径 |
[version | 输出当前目标Java进程所加载的Greys版本号 |
quit | 退出greys客户端 |
shutdown | 关闭greys服务端 |
reset | 重置增强类,将被greys增强过的类全部还原 |
jvm | 查看当前JVM的信息 |
help命令
- 查看帮助文档
help trace
hlep monitor
trace命令
- trace命令可以看方法性能开销,目前支持一级调用方法的耗时追踪
trace class-pattern method-pattern condition-express
具体的使用方法查看 help trace
- 举例
trace *ElasticSearchService insertIndexBulk '#cost>10'
trace *ElasticSearchService insertIndexBulk params[0].length==1
trace *NovaCodec decode '#cost>200'
ptrace命令
- trace的增强版本,可以指定渲染的路径,还可以和tt命令联动
ptrace lass-pattern method-pattern condition-express [-t]
--path 可以过滤渲染的路径
- 举例
ptrace *ChannelBuffers dynamicBuffer --path com.alibaba.dubbo.remoting.transport.netty.NettyCodecAdapter '#cost>=1' -t