-
Notifications
You must be signed in to change notification settings - Fork 144
linyimin edited this page Dec 31, 2023
·
2 revisions
提供了手动安装和一键脚本安装两种安装方式
-
手动安装
-
点击realease下载最新版tar.gz包
-
新建文件夹,并解压
-
-
脚本安装(linux/mac)
脚本默认安装路径:$HOME/spring-startup-analyzer
curl -sS https://raw.githubusercontent.com/linyimin0812/spring-startup-analyzer/main/bin/install.sh | sh本项目提供了以下几个配置项,不是必需配置项,可以直接使用默认配置。两种方式进行配置:
- 直接在配置文件中配置: 安装路径
/spring-startup-analyzer/config/spring-startup-analyzer.properties - 在启动参数中配置,如应用启动健康检查超时时间为30分钟:
-Dspring-startup-analyzer.app.health.check.timeout=30
相关配置:
| 配置项 | 说明 | 默认值 |
|---|---|---|
| spring-startup-analyzer.app.health.check.timeout | 应用启动健康检查超时时间,单位为分钟 | 20 |
| spring-startup-analyzer.app.health.check.endpoints | 应用启动成功检查url,可配置多个,以","分隔 | http://127.0.0.1:7002/actuator/health |
| spring-startup-analyzer.admin.http.server.port | 管理端口 | 8065 |
| spring-startup-analyzer.async.profiler.sample.thread.names | async profiler采集的线程名称,支持配置多个,以","进行分隔 | main |
| spring-startup-analyzer.async.profiler.interval.millis | async profiler采集间隔时间(ms) | 5 |
| spring-startup-analyzer.linux.and.mac.profiler | 指定linux/mac下火焰图采样器:async_profiler/jvm_profiler | jvm_profiler |
| spring-startup-analyzer.invoke.count.methods | 需要统计调用信息的方法 | org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(java.lang.String,org.springframework.beans.factory.support.RootBeanDefinition,java.lang.Object[]) |
需要注意的是,判断应用启动成功的逻辑是:
- 对SpringApplication.run方法进行字节码增强,方法退出时则认为应用启动完成(仅对springboot应用生效)
- 轮询请求健康检查的url,返回200则认为启动完成(适用于所有spring应用)
- 以上两种方式均未成功时,超出应用启动健康检查超时时间则认为应用启动完成
如果是非springboot应用,需要通过
spring-startup-analyzer.app.health.check.endpoints配置一下健康检查URL。
此项目是以agent的方式启动的,所以在启动命令中添加参数-javaagent:安装路径/spring-startup-analyzer/lib/spring-profiler-agent.jar
- 以java命令行的方式启动应用,则在命令行中添加参数,例如:
java -javaagent:/Users/runner/spring-startup-analyzer/lib/spring-profiler-agent.jar \
-Dproject.name=mac-demo \
-Dspring-startup-analyzer.admin.http.server.port=8066 \
-jar /Users/runner/spring-startup-analyzer/spring-boot-demo.jar- IDEA中启动,则需要在VM options选项中添加
-javaagent:/Users/runner/spring-startup-analyzer/lib/spring-profiler-agent.jar日志文件路径:安装路径/spring-startup-analyzer/logs
- startup.log: 启动过程中的日志
- transform.log: 被re-transform的类/方法信息
应用启动完成后会在console和startup.log文件中输出======= spring-startup-analyzer finished, click http://localhost/:xxxx to visit details. ======,可以通过此输出来判断采集是否完成。
- 添加pom依赖
<dependency>
<groupId>io.github.linyimin0812</groupId>
<artifactId>spring-async-bean-starter</artifactId>
<version>${latest_version}</version>
</dependency>- application.properties中配置异步加载信息
# 异步化的Bean可能在Spring Bean初始化顺序的末尾,导致异步优化效果不佳,打开配置优先加载异步化的Bean
spring-startup-analyzer.boost.spring.async.bean-priority-load-enable=true
# 指定异步的Bean名称
spring-startup-analyzer.boost.spring.async.bean-names=testBean,testComponent
# 执行异步化Bean初始化方法线程池的核心线程数
spring-startup-analyzer.boost.spring.async.init-bean-thread-pool-core-size=8
# 执行异步化Bean初始化方法线程池的最大线程数
spring-startup-analyzer.boost.spring.async.init-bean-thread-pool-max-size=8- 在release下载spring-startup-cli
- 在项目的工作目录(HOME)下执行此命令行工具
java -jar spring-startup-cli.jar- 使用
config命令配置相关信息
config set- 编码完成后执行
reload命令,即可完成热加载