什么情况使用greys
- 没有记录入参出参?
- 没有记录方法耗时,只能通过jstack猜?
greys可以帮你解决这个问题。
安装方法:
curl -sLk http://ompc.oss.aliyuncs.com/greys/install.sh|sh
加入到$PATH中可方便调用
连接到greys
greys.sh <PID>[@IP:PORT]
使用help 查看所有的命令
所有命令help $command
可以查看具体的命令使用方式 sc
command
sc
查看加载的类:
查看加载的所有的String类
sc -E .*String
正则匹配String类
查看类的加载路径和加载器
sc -d org.apache.xerces.xni.XMLString
查看类的加载路径和加载器
sm
查看类的方法,功能与上类似。不再赘述。
monitor
monitor -c 5 com.alitrip.trade.ttp.EnvListener testFun
|timestamp| class | method |total | success|fail |rt |fail-rate|
| -------- | -----: | :----: |
|时间戳| Java类 | 方法 |调用次数|成功次数|失败次数|平均RT|失败率 |
trace
trace能方便的帮助你定位和发现因RT高而导致的性能问题缺陷
trace class-pattern method-pattern
trace性能定位
[101,101ms]的含义,101所代表的含义是:当前节点的整体耗时;
101的含义是:当前节点在当前步骤的耗时;两者之间用逗号分割,单位为毫秒。
只能追踪一层调用的时间
ptrace
ptrace -t class-pattern method-pattern
参数 | 作用 |
---|---|
[t] | 显示出所有的入参返回值 |
剩余的与trace类似
watch
watch命令能方便的让你观察到指定方法的调用情况。
能观察到的范围为:
- 返回值
- 抛出异常
- 入参
watch [-b] class-pattern method-pattern expression
[b]:在方法调用之前观察
[e]:在方法抛出异常之后环节观察
[s]:在方法正常返回之后环节观察
[f]:在方法结束之后(正常返回和异常返回)环节观察
e.g 查看抛出异常方法的入参:
watch -f -x 1 com.alitrip.trade.trp.dal.dao.impl.TripTrpApplyDAOImpl getTripTrpApplyList 'params[0]'
网友评论