项目地址: https://github.com/linyimin0812/spring-startup-analyzer
项目描述:
采集 Spring 应用启动过程数据——Spring Bean 初始化详情信息,支持初始化耗时/beanName 搜索、Spring Bean 初始化时序图、方法调用次数及耗时统计(支持自定义方法)、应用未加载的 jar 包(帮助 fatjar 瘦身)及应用启动过程线程 wall clock 火焰图,并生成交互式分析报告(HTML),用于分析 Spring 应用启动卡点,支持 Spring Bean 异步初始化,减少优化 Spring 应用启动时间。
亮点:
截图:
Spring Bean 初始化详情
Spring Bean 初始化时序图
方法调用次数、耗时统计(支持自定义方法)
应用未加载的 jar 包(帮助 fatjar 瘦身)
应用启动过程线程 wall clock 火焰图(支持指定线程名称,不指定则采集全部线程)
1
wxy1991 2023-07-28 14:21:48 +08:00
java 仔点赞
|
2
hexiaowu1993 2023-07-28 14:22:03 +08:00
东西很不错,正好需要,支持一个,已 star
|
3
zjp 2023-07-28 15:00:34 +08:00 via Android 1
还没有仔细看,印象中可以在 agent 声明 bean ,监听 Spring 启动完成事件吧。这样可以省去 spring-startup-analyzer.app.health.check.endpoints 配置
|
4
watzds 2023-07-28 15:28:23 +08:00
不错,之前我是在项目里放个 InstantiationAwareBeanPostProcessor ,自己统计 bean 实例化和初始化时间,也支持 bean 嵌套依赖
|
5
lc5900 2023-07-28 18:49:11 +08:00
试了下还不错,就是默认不支持 Arm 版 mac ,要更换 async-profiler 依赖,换了之后就可以了。
|
6
linyimin520812 OP @zjp 非常好的建议,我研究一下 Spring 启动完成事件
|
7
linyimin520812 OP @lc5900 感谢使用。目前确实不支持 Arm 版 mac ,async-profiler 是定制了一些功能然后自己在编译的,原 async-profiler 是支持 Arm 版 mac 的,但是自己编译后就不支持了,这个我再看一下
|
8
linyimin520812 OP @lc5900 v2.0.6 版本支持 ARM 版的 mac 啦
|
9
linyimin520812 OP @zjp 发现一种方式可以省去 spring-startup-analyzer.app.health.check.endpoints 配置,大多数情况下,spring boot 应用的入口都是在 main 方法中执行 SpringApplication.run,可以对 SpringApplication.run()插桩,方法执行完成则说明应用启动完成
|