zoukankan      html  css  js  c++  java
  • Greys--JVM异常诊断工具

    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

  • 相关阅读:
    Eclipse 启动Tomcat 超时报错的解决方案
    ExtJS提交到服务器端的方式以及简单的登录实现
    19.CentOS7下PostgreSQL安装过程
    18.正向代理和反向代理
    17.NET Core WebApi跨域问题
    16.Ubuntu LTS 16.04安装搜狗输入法全过程记录(纯新手)
    15.基础知识相关好帖(持续更新)
    14.C#/.NET编程中的常见异常(持续更新)
    13.padding和margin,几种参数
    12.Visual Studio 2013中的默认快捷键
  • 原文地址:https://www.cnblogs.com/zhaoxinshanwei/p/9139827.html
Copyright © 2011-2022 走看看