使能JBooster特性
介绍
- 云场景下,应用有着“单个云应用实例分配资源少”与“云应用频繁地弹性伸缩”的特点,传统JVM应用启动慢的问题在此场景下更为严重。
- 云应用所需的CPU资源是由其启动时的负载与稳定运行时的负载(或业务峰值时所需负载)综合决定的。
- JBooster特性通过数据共享、远程编译等形式来提升应用启动速度、降低CPU占用、加快弹性伸缩的响应速度、降低云应用部署成本。
场景建议
CPU资源受限、类加载耗时长或编译耗时占比高,导致启动耗时长。
使用约束
- JBooster特性仅支持毕昇JDK 17版本。
- 客户端和服务端均部署在同一信任域内,由用户确保通信安全。
- 服务端编译AOT需要系统中安装ld指令。
若使用的是openEuler操作系统请使用以下命令进行ld指令的安装。
yum install binutils
使用方法
- 开启服务端JBooster Server。
服务端启动成功后会输出“The JBooster server is ready!”。注意使用JBooster Server的整个过程中需要保持服务端为启动状态,不能手动停止,如需执行其他命令需另起窗口。
$JAVA_HOME/bin/jbooster --server-port=24567
使用jbooster --help命令来查看支持的命令行参数。
$JAVA_HOME/bin/jbooster --help
- 构建应用程序包。
本文以spring-petclinic-*.*.*-SNAPSHOT.jar为例进行应用程序的构建。构建过程中依赖maven工具,请确保构建环境已安装maven。
请参见https://github.com/spring-projects/spring-petclinic?tab=readme-ov-file#run-petclinic-locally构建应用程序包spring-petclinic-*.*.*-SNAPSHOT.jar。git clone https://github.com/spring-projects/spring-petclinic.git cd spring-petclinic mvn package -DskipTests=true
构建成功后,会在“./target”文件夹中生成一个jar包,jar包名称为spring-petclinic-*.*.*-SNAPSHOT.jar,其版本号随代码仓更新而变化。
- 启用客户端。
第一次启用客户端,生成加速包,JBoosterAddress需指定服务端的地址,端口号需和服务端一致。本文中的应用程序spring-petclinic-3.2.0.jar启动成功后会输出“(process running for X.XXX)”的日志,其中“X.XXX”即启动时间。
$JAVA_HOME/bin/java -XX:+UnlockExperimentalVMOptions -XX:+UseJBooster -XX:JBoosterAddress=127.0.0.1 -XX:JBoosterPort=24567 -jar ./target/spring-petclinic-*.*.*-SNAPSHOT.jar
后续启用客户端可以获得加速效果,命令与第一次启用客户端一致,日志输出显示启动时间有比较明显的减少。