← 返回首页

Greys Anatomy诊断工具

📂 java ⏱ 1 min 150 words

Greys Anatomy诊断工具

Greys Anatomy是阿里巴巴早期开源的Java线上诊断工具,是Arthas的前身,提供了基础的诊断能力。

快速启动

# 下载Greys
# 访问 https://github.com/oldmanpushcart/greys-anatomy

# 启动
java -jar greys-boot.jar <pid>

# 或者使用Grep启动
./greys.sh <pid>@<ip>:<port>

核心命令

jad - 反编译

# 反编译类
jad com.example.service.OrderService

# 反编译指定方法
jad com.example.service.OrderService createOrder

# 保存到文件
jad -c <classloaderHash> com.example.service.OrderService > /tmp/OrderService.java

sc - 类搜索

# 搜索类
sc com.example.*

# 查看类详细信息
sc -d com.example.service.OrderService

# 搜索所有实现了某接口的类
sc -d implements javax.servlet.Filter

sm - 方法搜索

# 搜索方法
sm com.example.service.OrderService

# 搜索特定方法
sm com.example.service.OrderService create*

stack - 调用栈

# 查看方法调用栈
stack com.example.service.OrderService createOrder

# 带条件
stack com.example.service.OrderService createOrder 'params[0].amount > 1000'

trace - 追踪

# 追踪方法耗时
trace com.example.service.OrderService createOrder

# 过滤耗时
trace com.example.service.OrderService createOrder '#cost > 100'

watch - 监控

# 观察返回值
watch com.example.service.OrderService createOrder returnObj

# 观察入参
watch com.example.service.OrderService createOrder params

# 观察异常
watch com.example.service.OrderService createOrder throwExp

实战应用

排查线程问题

# 查看线程信息
thread

# 查看指定线程
thread <id>

# 查看死锁
thread -b

排查性能问题

# CPU采样
profiler start
profiler stop --format html --file /tmp/profile.html

# 方法耗时统计
monitor com.example.service.OrderService createOrder -c 10

与Arthas对比

特性 Greys Arthas
维护状态 停止维护 持续更新
功能丰富度 基础诊断 诊断+监控+分析
社区支持 较弱 活跃
推荐使用 仅学习 生产推荐

小结

Greys Anatomy是Java线上诊断的先驱工具,学习其原理有助于理解Arthas等现代诊断工具的设计。