qidao123.com ToB IT社区-企服评测·应用市场

标题: 你的Spring应用启动很慢?不妨试试这个工具! [打印本页]

作者: 金歌    时间: 2023-7-24 09:29
标题: 你的Spring应用启动很慢?不妨试试这个工具!
睡不着闲逛,在GitHub上看到一个挺实用的开源项目:Spring Startup Analyzer
从项目名称中就大概能猜到,这是一个分析Spring应用启动过程的工具。Spring Startup Analyzer通过采集Spring应用启动过程的数据,进而生成一个交互式的分析报告,帮助用户发现Spring应用启动慢的位置。
同时,Spring Startup Analyzer还提供了Spring Bean异步初始化的工具,来帮助开发者加快Spring应用的启动时间。
下面一起来看看其提供的强大功能。
分析能力

我们可以先从该项目中给出HTML样例报告来看看它所提供的分析功能。感兴趣的可以通过下面链接访问:
把报告内容的细节部分都收起来,可以看到如下图所示的内容:

主要有六个部分:




点开之后,还能看到具体每次调用时候的时间开销和一些调用细节:



如何使用

通过上面的介绍,相信你已经了解该工具的强大之处了。接下来就可以通过下面的方法尝试分析一下自己的应用吧:
第一步:从里面的链接中下载最新的安装包
https://github.com/linyimin0812/spring-startup-analyzer/tags
第二步:解压下载的安装包,记住解压后的路径,下面一步要用
第三步:编辑Spring Boot的启动参数,包括:

第四步:查看该工具的日志,可以通过$HOME/spring-startup-analyzer/logs路径,这里$HOME代表以前的解压路径,日志文件的类别为:
另外,该工具还支持自定义扩展,这里DD没试过,就不具体介绍了。感兴趣的童鞋可以根据文档去试试。
启动优化

这里提到了一个启动加速的优化思路,就是把一些耗时的Bean初始化改成异步就能实现。该项目提供了Bean的异步初始化工具,也非常好用,只需要下面几步就能完成。
第一步:引入依赖
  1. <dependency>
  2.     <groupId>io.github.linyimin0812</groupId>
  3.     <artifactId>spring-async-bean-starter</artifactId>
  4.     <version>2.0.2</version>
  5. </dependency>
复制代码
第二步:配置参数
  1. # 异步化的Bean可能在Spring Bean初始化顺序的末尾,导致异步优化效果不佳,打开配置优先加载异步化的Bean
  2. spring-startup-analyzer.boost.spring.async.bean-priority-load-enable=true
  3. # 指定异步的Bean名称
  4. spring-startup-analyzer.boost.spring.async.bean-names=testBean,testComponent
  5. # 执行异步化Bean初始化方法线程池的核心线程数
  6. spring-startup-analyzer.boost.spring.async.init-bean-thread-pool-core-size=8
  7. # 执行异步化Bean初始化方法线程池的最大线程数
  8. spring-startup-analyzer.boost.spring.async.init-bean-thread-pool-max-size=8
复制代码
第三步:检查Bean是否异步初始化。查看日志$HOME/spring-startup-analyzer/logs/startup.log文件,对于异步执行初始化的方法,会按照以下格式写一条日志:
  1. async-init-bean, beanName: ${beanName}, async init method: ${initMethodName}
复制代码
但是,作者在文档中也提到了,异步并不是万能的,你还需要注意以下这几点:
好了,今天的学习就到这里!如果您学习过程中如遇困难?可以加入我们超高质量的Spring技术交流群,参与交流与讨论,更好的学习与进步!更多Spring Boot教程可以点击直达!,欢迎收藏与转发支持!
最后,奉上项目地址:https://github.com/linyimin0812/spring-startup-analyzer

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 qidao123.com ToB IT社区-企服评测·应用市场 (https://dis.qidao123.com/) Powered by Discuz! X3.5