线上系统为何经常出错?数据库为何屡遭黑手?业务调用为何频频失败?连环异常堆栈案,究竟是那次调用所为? 数百台服务器意外雪崩背后又隐藏着什么?是软件的扭曲还是硬件的沦丧? 走进科学带你了解Greys, Java线上问题诊断工具。
-
远程安装
curl -sLk http://ompc.oss.aliyuncs.com/greys/install.sh|sh -
远程安装(短链接)
curl -sLk http://t.cn/R2QbHFc|sh
更新内容
-
去掉了所有命令的
-S参数,默认-S参数永远生效,这意味着你在watch一个接口或者抽象类时能自动关联到其所有的实现和子类 -
所有命令进行类匹配时,能向上查找到其父类所声明的方法。之前只能匹配到当前类所声明的方法,遇到子类调用父类的情况则匹配不上,容易造成使用者的误解
-
增加
ptrace命令,该命令为trace命令的增强版,但内部实现完全不同。trace的工作原理非常容易让增强后的方法超过JVM方法64K的限制,ptrace则绕过这个问题ptrace的-t参数能利用tt命令记录下指定需然路径上的方法入参和返回值,并在tt命令看到这些调用记录,极大方便跟踪定位问题ptrace的使用会带来一定的性能开销,如果渲染路径匹配上的类、方法过多,会在渲染过程中大量消耗CPU资源、造成系统长时间停顿。所以建议--path、--Epath匹配的方法越少越好
-
monitor命令增加MIN-RT、MAX-RT两个指标,方便排除RT判断的干扰 -
修复
trace命令之前在处理方法抛出异常时会导致展示的链路错误、链路耗时为负数的情况 -
重构部分内核,为年后发布
1.8.0.0版本支持GP协议(GREYS-PROTOCOL)做准备 -
优化性能,表达式用
Unsafe、ThreadLocal、LRUCache做性能开销优化 -
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中的trace、ptrace命令支持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程序在本地编译时会主动在本地安装当前编译的版本,所以编译完成后即相当在本地完成了安装。