Woody:开源Java应用性能诊断分析工具

核心价值

Woody是一款专注于Java应用性能问题诊断的工具,旨在帮助开发者

  1. 定位定位高GC频率问题,识别内存分配热点
  2. 分析CPUCPU使用率过高的代码路径
  3. 追踪接口耗时瓶颈,定位内部操作耗时占比
  4. 诊断锁竞争问题,支持精准优化
  5. 针对特定业务接口/请求的性能问题(CPU、内存、耗时)进行深度分析

代码仓库

https://github.com/happy-profiler/woody
目前发布第一版,后续会不断丰富功能,不断完善,欢迎感兴趣同行使用,提建议,bug,issue和pr。

适用环境

  • JDK版本:支持JDK 1.8及以上
  • 操作系统
    • macOS
    • Linux x64/arm64
  • 低版本JDK和其他操作系统暂不支持

核心特性

  • 基于命令行交互,集成async-profiler生成采样样本和火焰图
  • 实现业务请求与火焰图样本的精确关联
  • 支持手动过滤无关业务入口,提高采样精准率
  • 极低性能损耗,适合生产环境使用
  • 代码少量借鉴自Arthas

支持中间件

  1. SpringMVC
  2. Dubbo
  3. Grpc
  4. Kafka
  5. RocketMQ

后续将持续扩展支持更多中间件

快速开始

  1. 从项目release页面下载最新版本的woody-boot-xxx.jar
  2. 启动工具:
    /* by 01130.hk - online tools website : 01130.hk/zh/html2cj.html */
    java -jar woody-boot-1.0.0.jar
    
  3. 选择目标Java进程编号,进入命令交互界面,输入stop结束退出

在这里插入图片描述

命令参考

单横杠-表示命令操作,双横杠--表示参数,后续要接参数值

pr(profiling resource)- 选择分析的业务入口

用于指定需要分析的业务入口资源,可同时选择多种中间件的多个入口。

参数说明
-ls列举当前应用的所有业务入口资源
-lt列举当前应用支持的业务资源类型
-s选择业务入口资源
-us移除已选中的业务入口资源
-lst列举已选择的业务入口资源类型列表(未选择时为空)
-lss列举已选择的业务入口资源
--type指定中间件类型(支持上述5种类型)
--order指定中间件业务入口的资源编号(多编号用英文逗号分隔)
不指定时表示选择该类型的所有入口资源

在这里插入图片描述

pe(profiling event)- 选择采集事件类型

用于指定需要采集的性能事件类型,对应async-profiler的4种火焰图类型。

参数说明
-l列举当前应用支持的事件类型
(注:部分应用可能不支持alloc,取决于JDK版本和操作系统)
-s选择要采集的事件类型
--cpuCPU事件,参数为采样间隔(ms)
--alloc内存分配事件,参数为采样阈值(kb)
--wall耗时事件,参数为采样间隔(ms)
--lock锁竞争事件,参数为采样间隔(ms)
-c清除已选中的事件类型

支持同时选择多个事件类型,将生成对应类型的火焰图

在这里插入图片描述

pf(profiling)- 操作性能分析过程

用于控制async-profiler的启动、停止和状态查询。

参数说明
start启动性能分析
(启动后需在30秒内触发已选择的业务入口请求,否则启动失败)
stop结束性能分析
status查询当前性能分析状态(未运行/已运行时长)
--duration设置分析持续时间(秒),时间到后自动结束
(非必须,可通过stop命令提前结束)
--file指定分析结束后生成的火焰图文件名
(默认生成在工具运行目录,多事件时会自动添加类型前缀)
(未指定时,采样结果将被缓存,供ts命令使用)

在这里插入图片描述

在这里插入图片描述

ts(trace sample)- 检索分析业务请求和样本,生成火焰图

用于检索性能分析样本,支持通过traceId定位特定请求,或查看资源消耗TopN的请求。

参数说明
-l列出采样样本(需配合--id或--top参数)
-f生成火焰图(需配合--id或--top参数)
-c清除缓存的前次分析样本数据
--file指定生成的火焰图文件名(配合-f参数使用)
--event指定分析事件类型
(当pe命令选择多个事件时必须指定,单个事件时可省略)
--id指定traceId(业务请求唯一标识),检索对应请求的样本
--top指定数量N,检索资源消耗最多的前N个请求ID
(将显示样本数量、起止时间等信息)

traceId默认生成规则:1~Long.MAX_VALUE间的随机数

可通过修改ParametricIdGenerator实现自定义traceId生成逻辑(从业务上下文/参数/入口对象提取),下个版本可通过命令及表达式从业务请求生成

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如何本地编译及调试

本地编译: clone工程,执行 mvn clean package -DskipTests ,boot模块生成的jar包就是工具包,直接运行即可

调试: 待分析应用添加远程debug参数和端口 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -Xdebug ,woody工程直接远程关联debug即可

火焰图查看

火焰图的具体查看方法请参考相关文档或通过AI工具学习。

**项目名称:** 基于Vue.js与Spring Cloud架构的博客系统设计与开发——微服务分布式应用实践 **项目概述:** 本项目为计算机科学与技术专业本科毕业设计成果,旨在设计并实现一个采用前后端分离架构的现代化博客平台。系统前端基于Vue.js框架构建,提供响应式用户界面;后端采用Spring Cloud微服务架构,通过服务拆分、注册发现、配置中心及网关路由等技术,构建高可用、易扩展的分布式应用体系。项目重点探讨微服务模式下的系统设计、服务治理、数据一致性及部署运维等关键问题,体现了分布式系统在Web应用中的实践价值。 **技术架构:** 1. **前端技术栈:** Vue.js 2.x、Vue Router、Vuex、Element UI、Axios 2. **后端技术栈:** Spring Boot 2.x、Spring Cloud (Eureka/Nacos、Feign/OpenFeign、Ribbon、Hystrix、Zuul/Gateway、Config) 3. **数据存储:** MySQL 8.0(主数据存储)、Redis(缓存与会话管理) 4. **服务通信:** RESTful API、消息队列(可选RabbitMQ/Kafka) 5. **部署与运维:** Docker容器化、Jenkins持续集成、Nginx负载均衡 **核心功能模块:** - 用户管理:注册登录、权限控制、个人中心 - 文章管理:富文本编辑、分类标签、发布审核、评论互动 - 内容展示:首页推荐、分类检索、全文搜索、热门排行 - 系统管理:后台仪表盘、用户与内容监控、日志审计 - 微服务治理:服务健康检测、动态配置更新、熔断降级策略 **设计特点:** 1. **架构解耦:** 前后端完全分离,通过API网关统一接入,支持独立开发与部署。 2. **服务拆分:** 按业务域划分为用户服务、文章服务、评论服务、文件服务等独立微服务。 3. **高可用设计:** 采用服务注册发现机制,配合负载均衡与熔断器,提升系统容错能力。 4. **可扩展性:** 模块化设计支持横向扩展,配置中心实现运行时动态调整。 **项目成果:** 完成了一个具备完整博客功能、具备微服务典型特征的分布式系统原型,通过容器化部署验证了多服务协同运行的可行性,为云原生应用开发提供了实践参考。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值