---
title: 使能JBooster特性
description: "- 云场景下，应用有着“单个云应用实例分配资源少”与“云应用频繁地弹性伸缩”的特点，传统JVM应用启动慢的问题在此场景下更为严重。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengaccel/system-lib/ugbishengjdklib/kunpengaccel_jdk_06_0004.html
sourcePath: /source/zh/kunpengaccel/system-lib/ugbishengjdklib/kunpengaccel_jdk_06_0004.html
indexId: 9f04e9cdeeb9c1386f8b14993e6b835fe49ec0ee7a6ea3cc55bd3f9d1ad03bf780
---
# 使能JBooster特性

#### 介绍

- 云场景下，应用有着“单个云应用实例分配资源少”与“云应用频繁地弹性伸缩”的特点，传统JVM应用启动慢的问题在此场景下更为严重。
- 云应用所需的CPU资源是由其启动时的负载与稳定运行时的负载（或业务峰值时所需负载）综合决定的。
- JBooster特性通过数据共享、远程编译等形式来提升应用启动速度、降低CPU占用、加快弹性伸缩的响应速度、降低云应用部署成本。


#### 场景建议

CPU资源受限、类加载耗时长或编译耗时占比高，导致启动耗时长。


#### 使用约束

- 当毕昇JDK版本为17时支持JBooster特性，从毕昇JDK 17.0.12及之后的版本开始支持。
- 客户端和服务端均部署在同一信任域内，由用户确保通信安全。
- 服务端编译AOT需要系统中安装ld指令。

  - 基于RPM包管理的操作系统（CentOS、Fedora、openEuler等）使用yum安装ld指令：
    1 yum install binutils

  - 基于Debian包管理的操作系统（Ubuntu、Debian等）使用apt安装ld指令：
    1 apt install binutils


#### 使用方法

1. 开启服务端JBooster Server。
  服务端启动成功后会输出“The JBooster server is ready!”。使用JBooster Server的整个过程中需要保持服务端为启动状态，不能手动停止，如需执行其他命令需启动新的窗口。

  1 $JAVA_HOME/bin/jbooster --server-port=<port>

  上述命令中的端口号<port>用户可自定义，端口限制范围为1024~65535。 使用jbooster --help命令来查看支持的命令行参数。 1 $JAVA_HOME/bin/jbooster --help

2. 构建应用程序包。
  本文以spring-petclinic-*.*.*-SNAPSHOT.jar为例进行应用程序的构建。构建过程中依赖maven工具，请确保构建环境已安装maven。

  请参见GitHub链接(https://github.com/spring-projects/spring-petclinic?tab=readme-ov-file#run-petclinic-locally)构建应用程序包spring-petclinic-*.*.*-SNAPSHOT.jar。 1 2 3 4 5 6 7 git clone https://github.com/spring-projects/spring-petclinic.git wget https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.6/apache-maven-3.9.6-bin.tar.gz tar -xf apache-maven-3.9.6-bin.tar.gz export PATH=$PWD/apache-maven-3.9.6/bin:$PATH cd spring-petclinic git reset --hard 2daa3993ee8dce8ec72cf96bc5ef7aee6e36f8fb mvn package -DskipTests=true

  mvn的使用可能需要配置代理，请自行按实际情况配置。

  构建成功后，会在“./target”文件夹中生成一个jar包，jar包名称为spring-petclinic-*.*.*-SNAPSHOT.jar，其版本号随代码仓库更新而变化。

3. 启用客户端。
  第一次启用客户端，生成加速包，JBoosterAddress需指定服务端的地址，端口号需和服务端一致。本文中的应用程序spring-petclinic-3.2.0.jar启动成功后会输出“(process running for X.XXX)”的日志，其中“X.XXX”即启动时间。客户端启动成功后可以使用CTRL+C键停止。

  1 $JAVA_HOME/bin/java -XX:+UnlockExperimentalVMOptions -XX:+UseJBooster -XX:JBoosterAddress=127.0.0.1 -XX:JBoosterPort=<port> -jar ./target/spring-petclinic-*.*.*-SNAPSHOT.jar

  后续启用客户端可以获得加速效果，命令与第一次启用客户端一致，日志输出显示启动时间有比较明显的减少。上述命令中的端口号<port>用户可自定义，与1中的<port>保持一致即可。
