Skip to content

xinyu162/greys-anatomy

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LOGO icon

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

相关文档

程序安装

  • 远程安装

    curl -sLk http://ompc.oss.aliyuncs.com/greys/install.sh|sh
  • 远程安装(短链接)

    curl -sLk http://t.cn/R2QbHFc|sh

最新版本

VERSION : 1.7.2.2

更新内容

  • 去掉了所有命令的-S参数,默认-S参数永远生效,这意味着你在watch一个接口或者抽象类时能自动关联到其所有的实现和子类

  • 所有命令进行类匹配时,能向上查找到其父类所声明的方法。之前只能匹配到当前类所声明的方法,遇到子类调用父类的情况则匹配不上,容易造成使用者的误解

  • 增加ptrace命令,该命令为trace命令的增强版,但内部实现完全不同。

    1. trace的工作原理非常容易让增强后的方法超过JVM方法64K的限制,ptrace则绕过这个问题
    2. ptrace-t参数能利用tt命令记录下指定需然路径上的方法入参和返回值,并在tt命令看到这些调用记录,极大方便跟踪定位问题
    3. ptrace的使用会带来一定的性能开销,如果渲染路径匹配上的类、方法过多,会在渲染过程中大量消耗CPU资源、造成系统长时间停顿。所以建议--path--Epath匹配的方法越少越好
  • monitor命令增加MIN-RTMAX-RT两个指标,方便排除RT判断的干扰

  • 修复trace命令之前在处理方法抛出异常时会导致展示的链路错误、链路耗时为负数的情况

  • 重构部分内核,为年后发布1.8.0.0版本支持GP协议(GREYS-PROTOCOL)做准备

  • 优化性能,表达式用UnsafeThreadLocalLRUCache做性能开销优化

  • 1.7.2.0因为 #80 问题而调整了ptrace命令参数的用法

    使用--path--Epath两个参数来完成原来非常复杂的正则表达式写法

    ptrace com.alibaba.*Test printAddress \
        --path com.alibaba.Address \
        --path com.alibaba.User \
        --Epath com\.alibaba\.manager\..*
  • 1.7.2.1中的traceptrace命令支持cost(ms)条件作为过滤条件

    ptrace com.alibaba.*Test printAddress 'cost>=1L' --path com.alibaba.*
  • 1.7.2.2中修复tt -i输出时间片段详情时忽略了returnObj的BUG

版本号说明

主版本.大版本.小版本.漏洞修复

  • 主版本

    这个版本更新说明程序架构体系进行了重大升级,比如之前的0.1版升级到1.0版本,整个软件的架构从单机版升级到了SOCKET多机版。并将Greys的性质进行的确定:Java版的HouseMD,但要比前辈们更强。

  • 大版本

    程序的架构设计进行重大改造,但不影响用户对这款软件的定位。

  • 小版本

    增加新的命令和功能

  • 漏洞修复

    对现有版本进行漏洞修复和增强

    • 主版本大版本、之间不做任何向下兼容的承诺,即0.1版本的Client不保证一定能正常访问1.0版本的Server。

    • 小版本不兼容的版本会在版本升级中指出

    • 漏洞修复保证向下兼容

维护者

程序编译

  • 打开终端

    git clone [email protected]:oldmanpushcart/greys-anatomy.git
    cd greys-anatomy/bin
    ./greys-packages.sh
  • 程序执行

    target/目录下生成对应版本的release文件,比如当前版本是1.7.0.4,则生成文件target/greys-1.7.0.4-bin.zip

    程序在本地编译时会主动在本地安装当前编译的版本,所以编译完成后即相当在本地完成了安装。

About

Java诊断工具

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 97.3%
  • Shell 2.3%
  • Groovy 0.4%