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

一、简介

我们平时在线上或者开发中会遇到各种性能、功能等问题,在运行过程中需要查看方法入参、返回值,或者方法执行的堆栈时间,或者jar冲突时类加载来自那个jar包等问题。我们在开发过程中,可能会打印log日志、手动去打印入参、返回值等,或者自己实现简单的profile方法,代码侵入性大且效率较低;另外我们可以使用类似btrace工具去跟踪,这需要自己去实现btrace脚本,服务端需要启动agent,也有点小麻烦。后来淘宝聚石用scala写了个houseMD,但只支持到jdk1.6,后续也没有更新了;后面又有淘宝同学借鉴了btrace和houseMD,写了Greys,方便定位常见的java问题,下面简单介绍其使用方法。

下载地址:http://ompc.oss.aliyuncs.com/greys/release/greys-1.7.6.4-bin.zip

二、安装

a. 解压greys-1.7.6.4-bin.zip,目录结构如下

-rwxr-xr-x. 1 admin admin    1047 11月  7 11:54 ga.sh
-rw-r--r--. 1 admin admin 10595 11月 7 11:54 greys-agent.jar
-rw-r--r--. 1 admin admin 3472230 11月 7 11:54 greys-core.jar
-rwxr-xr-x. 1 admin admin 7972 11月 7 11:54 greys.sh
-rwxr-xr-x. 1 admin admin 2927 11月 7 11:54 gs.sh
-rwxr-xr-x. 1 admin admin 683 11月 7 11:54 install-local.sh

b. 安装

cd greys
sh ./install-local.sh

三、待监控应用启动agent

pid为应用进程号

./ga.sh pid

三、应用监控控制客户端

pid 为应用进程号, ip为应用所在机器, 3658为agent默认端口号

./greys.sh pid@ip:3658

或者远程访问

./gs.sh ip

四、Greys命令详解

命令 说明
help 查看命令的帮助文档,每个命令和参数都有很详细的说明
sc 查看JVM已加载的类信息
sm 查看已加载的方法信息
monitor 方法执行监控
trace 渲染方法内部调用路径,并输出方法路径上的每个节点上耗时
ptrace 强化版的trace命令。通过指定渲染路径,并可记录下路径中所有方法的入参、返值;与tt命令联动
watch 方法执行数据观测
tt 方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测
stack 输出当前方法被调用的调用路径
js 支持使用JavaScript脚本;支持CommonJS部分规范模块化(BMD规范)
version 输出当前目标Java进程所加载的Greys版本号
quit 退出greys客户端
shutdown 关闭greys服务端
rest 重置增强类,将被greys增强过的类全部还原
session 查看当前会话
jvm 查看当前JVM的信息

示列:

tt -t -n 100 *UserServiceImpl queryById
+----------+------------+----------------------+------------+----------+----------+-----------------+--------------------------------+--------------------------------+
| INDEX | PROCESS-ID | TIMESTAMP | COST(ms) | IS-RET | IS-EXP | OBJECT | CLASS | METHOD |
+----------+------------+----------------------+------------+----------+----------+-----------------+--------------------------------+--------------------------------+
| 1001 | 1001 | 2017-03-08 15:39:11 | 10 | true | false | 0x7204ebf1 | UserServiceImpl | queryById |
+----------+------------+----------------------+------------+----------+----------+-----------------+--------------------------------+--------------------------------+
| 1002 | 1002 | 2017-03-08 15:39:12 | 6 | true | false | 0x7204ebf1 | UserServiceImpl | queryById |
+----------+------------+----------------------+------------+----------+----------+-----------------+--------------------------------+--------------------------------+
| 1003 | 1003 | 2017-03-08 15:39:12 | 5 | true | false | 0x7204ebf1 | UserServiceImpl | queryById |
+----------+------------+----------------------+------------+----------+----------+-----------------+--------------------------------+--------------------------------+
| 1004 | 1004 | 2017-03-08 15:39:13 | 6 | true | false | 0x7204ebf1 | UserServiceImpl | queryById |
+----------+------------+----------------------+------------+----------+----------+-----------------+--------------------------------+--------------------------------+
| 1005 | 1005 | 2017-03-08 15:39:48 | 6 | true | false | 0x7204ebf1 | UserServiceImpl | queryById |
+----------+------------+----------------------+------------+----------+----------+-----------------+--------------------------------+--------------------------------+
| 1006 | 1006 | 2017-03-08 15:39:48 | 5 | true | false | 0x7204ebf1 | UserServiceImpl | queryById |
+----------+------------+----------------------+------------+----------+----------+-----------------+--------------------------------+--------------------------------+
| 1007 | 1007 | 2017-03-08 15:39:49 | 4 | true | false | 0x7204ebf1 | UserServiceImpl | queryById |
+----------+------------+----------------------+------------+----------+----------+-----------------+--------------------------------+--------------------------------+
| 1008 | 1008 | 2017-03-08 15:39:49 | 5 | true | false | 0x7204ebf1 | UserServiceImpl | queryById |

具体使用详见:https://github.com/oldmanpushcart/greys-anatomy/wiki/greys-pdf

Greys--JVM异常诊断工具的更多相关文章

  1. Greys Java在线问题诊断工具

    摘要: 线上系统为何经常出错?数据库为何屡遭黑手?业务调用为何频频失败?连环异常堆栈案,究竟是那次调用所为? 数百台服务器意外雪崩背后又隐藏着什么?是软件的扭曲还是硬件的沦丧? 走进科学带你了解Gre ...

  2. <JVM下篇:性能监控与调优篇>03-JVM监控及诊断工具-GUI篇

    笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...

  3. <JVM下篇:性能监控与调优篇>01-概述篇-02-JVM监控及诊断工具-命令行篇

    笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...

  4. (转)权威支持: 选择正确的 WebSphere 诊断工具

    权威支持: 选择正确的 WebSphere 诊断工具 原文:https://www.ibm.com/developerworks/cn/websphere/techjournal/0807_supau ...

  5. Java诊断工具Arthas

    Java诊断工具Arthas 1. Arthas简介 Arthas是阿里开源的一个线上java诊断工具,发现阿里还是挺喜欢开源一些技术的,造福人类.昨天试用了一下,发现真是强大,解决了我工作两年的很多 ...

  6. Arthas在线java进程诊断工具 在线调试神器

    tag: java 诊断 堆栈 在线调试 耗时 死锁 arthas 阿里巴巴 Arthas (阿尔萨斯) Arthas 是 Alibaba 开源的Java诊断工具,深受开发者喜爱. 官网文档:http ...

  7. 干货分享!JAVA诊断工具Arthas在Rainbond上实践~

    别再担心线上 Java 业务出问题怎么办了,Arthas 帮助你解决以下常见问题: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 ...

  8. java jvm常用命令工具

    [尊重原创文章出自:http://www.chepoo.com/java-jvm-command-tools.html] 一.概述 程序运行中经常会遇到各种问题,定位问题时通常需要综合各种信息,如系统 ...

  9. [转]linux 系统监控、诊断工具之 IO wait

    1.问题: 最近在做日志的实时同步,上线之前是做过单份线上日志压力测试的,消息队列和客户端.本机都没问题,但是没想到上了第二份日志之后,问题来了: 集群中的某台机器 top 看到负载巨高,集群中的机器 ...

随机推荐

  1. 面试题集锦;有关作用域和this的指向

    作用域面试题: 1. fn() function fn () { console.log(12) } var as = function () { console.log(45) } 2. var a ...

  2. H5笔记周记

    9.4 一.介绍浏览器 1.title 主题,题目 2.url 网址  3.body 网站的内容 4.html 语言,超文本标记语言 二.文件介绍 三.标签的结构 (一些快捷键:Ctrl+s 保存   ...

  3. div中的img垂直居中的方法,最简单! 偷学来的,,,不要说我抄袭啊(*^__^*)

    让div中的img垂直居中,水平居中很简单,用text-align:center; 让div中img垂直居中的方法其实也很简单 重点是: display:table-cell;   让标签具有表格的属 ...

  4. Linux apt-get命令

    一.简介 Ubuntu系列系统包管理工具.   二.常用指令   1.查询功能 apt-cache search package 搜索软件包 apt-cache show package 获取包的相关 ...

  5. linux网卡绑定脚本

    2013-08-20 15:30:51 此脚本适用于CentOS5.x和CentOS6.x. #!/bin/bash #**************************************** ...

  6. POJ 2449Remmarguts' Date 第K短路

    Remmarguts' Date Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 29625   Accepted: 8034 ...

  7. UI设计中颜色的前进色与后退色

    暖色调的颜色属于前进色.膨胀色可以使物体的视觉效果变大,而收缩色可以使物体的视觉效果变小.   颜色的另外一种效果.有的颜色看起来向上凸出,而有的颜色看起来向下凹陷,其中显得凸出的颜色被称为前进色,而 ...

  8. 纯H5+c3实现表单验证

    客户端验证是网页客户端程序最常用的功能之一,我们之前使用了各种各样的js库来进行表单的验证.HTML5其实早已为我们提供了表单验证的功能.至于为啥没有流行起来估计是兼容性的问题还有就是样式太丑陋了吧. ...

  9. web.xml 详细介绍(zz)

    web.xml 详细介绍 博客分类: CoreJava WebXMLServletJSPTomcat  http://mianhuaman.iteye.com/blog/1105522 1.启动一个W ...

  10. 阿里云help

    docker 技术的安全性问题,如果一个集群多个用户不希望互相可以看到对方的docker镜像和容器,怎么办? .... http://mirrors.aliyun.com/help/centos yu ...