文档章节

Greys Java在线问题诊断工具

 素雷
发布于 06/22 13:29
字数 809
阅读 14
收藏 0

Greys是一个JVM进程执行过程中的异常诊断工具。

在不中断程序执行的情况下轻松完成JVM相关问题排查工作

目标群体

  • 有时候突然一个问题反馈上来,需要入参才能完成定位,但恰恰没有任何日志。回去加上重新部署,一杯咖啡时间过去了,是不是很崩溃?

  • 当你经过反复这样几次折腾之后变得聪明了,在自己的代码的所有入参和出参地方都加上debug日志,但这次问题似乎暴露在别人的代码中了...是不是很无奈?

  • 突然遇到线上一个性能问题无法确定到底是哪个环节的耗时,只能反复抓jstack猜,还有没有办法可以好好的过日子啦?

遇到以上问题时,你就是我们这类工具的目标客户,此类工具能利用Java6的Instrumentation特性,动态增强你所指定的类,获取你想要到的信息。

https://www.ibm.com/developerworks/cn/java/j-lo-jse61/index.html

 

内置主要功能

  • 查看已被JVM所加载的类、方法信息

  • 方法执行监控

    调用量,成功失败率,响应时间

  • 方法执行数据操作

    入参、返回值、异常信息记录与查看;支持动作回放

  • 性能开销渲染

    跟踪指定路径中的方法调用轨迹、耗时

  • 查看方法调用堆栈

命令清单

命令 说明
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的信息

 

使用过程问题

1、$JAVA_HOME没有设置

添加JAVA_HOME环境变量

vim ~/.bashrc

在相应位置添加export JAVA_HOME=/usr/local/java

编辑完保存;

 

source ~/.bashrc即可重启greys

 

https://github.com/oldmanpushcart/greys-anatomy/wiki/greys-pdf#command-monitor

© 著作权归作者所有

共有 人打赏支持
粉丝 4
博文 259
码字总数 12690
作品 0
线上服务 CPU 100%?一键定位 so easy!

0、背景 经常做后端服务开发的同学,或多或少都遇到过 CPU 负载特别高的问题。尤其是在周末或大半夜,突然群里有人反馈线上机器负载特别高,不熟悉定位流程和思路的同学可能登上服务器一通手...

大数据之路
2017/08/28
0
2
IBM和SAP开源其JVM诊断工具

IBM最近发布了其Java诊断工具套件,该套件包含如下工具:面向Java的产品转储分析器(Dump Analyzer)、处理垃圾收集(GC,即Garbage Collection)的Extensible Verbose Toolkit和Java锁分析器...

JavaGG
2010/03/24
0
0
使用greys-anatomy分析java使用cpu100%案例

主要使用 top (-H) jstack greys(trace,watch)(安装参考https://github.com/oldmanpushcart/greys-anatomy) 步骤如下: 一.通过top查看当前cpu的情况 top 二.通过查看进程里面的线程情况 ...

陈卓明
2017/10/18
0
0
利用 Java dump 进行 JVM 故障诊断

引言 对于大型 java 应用程序来说,再精细的测试都难以堵住所有的漏洞,即便我们在测试阶段进行了大量卓有成效的工作,很多问题还是会在生产环境下暴露出来,并且很难在测试环境中进行重现。...

candies
2014/03/03
0
0
Java面试中,遇到这类面试题最吃亏!

从你接触 Java开发到现在,你对 Java最直观的印象是什么呢?是它宣传的 “Compile once, run anywhere”,还是目前看已经有些过于形式主义的语法呢?你对于 Java平台到底了解到什么程度?请你...

Java大蜗牛
07/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

java序列化(四) - 实现Externalnalizable接口

实现Externalnalizable接口 实现Externalnalizable接口 package meng.springboot.demo.obj;import java.io.Externalizable;import java.io.IOException;import java.io.ObjectInput......

晨猫
11分钟前
0
0
php 日志库获取调用方的代码文件地址和代码行数

在使用其他语言的打印日志的时候,经常能看到打印日志时带上文件地址和代码行数,对于调试和查找问题非常方便,但是 php 日志库里则很少见到这个功能,但这个功能还是可以实现的。 关键点就是...

anoty
17分钟前
3
0
Android Studio如何批量导入全部包import

当需要导包时,Android Studio有单个导包快捷键 Alt+Enter 但是没有全部的包 但是可以在设置里设置Auto Import自动导入功能

lanyu96
18分钟前
0
0
六款优秀的 Linux 基准测试工具

基准测试是指运行计算机程序去评估硬件和软件性能的行为。硬件基本测试包括评估处理器,内存,显卡,硬盘,网络等不同组件的性能。基准测试有两类: 复合和应用。复合基准对一个硬件执行压力...

openthings
21分钟前
0
0
什么是阿里云容器服务?

关于阿里云容器服务的详细内容:阿里云容器服务使用教程 容器服务(Container Service)提供高性能可伸缩的容器应用管理服务,支持用 Docker 容器进行应用生命周期管理,提供多种应用发布方式...

mcy0425
21分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部