You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何以生产模式运行Spring服务器应用并优化性能?

Spring Boot 生产构建优化指南(提升至Express级性能)

核心优化步骤:

1. 构建纯净的生产包

默认mvn package会生成包含所有依赖的可执行jar,但需排除开发依赖并激活生产配置:

  • 若项目中添加了Spring DevTools,在pom.xml中标记为可选依赖,确保构建时自动排除:
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
    </dependencies>
    
  • 构建时显式指定生产profile:
    mvn clean package -Dspring.profiles.active=prod
    

2. 关闭开发/调试特性

在src/main/resources/application-prod.properties中添加以下配置,禁用不必要的开发功能以减少性能开销:

# 降低日志级别,减少IO输出
logging.level.root=INFO
logging.level.org.springframework=WARN
logging.level.com.your.package=INFO

# 禁用JMX(无监控需求时关闭)
spring.jmx.enabled=false

# 彻底关闭DevTools热重启机制
spring.devtools.restart.enabled=false

# 禁用Web错误页面的栈追踪信息
server.error.include-stacktrace=never

3. 优化JVM运行参数

JVM参数对Spring Boot性能影响极大,启动jar时添加以下参数(根据服务器硬件调整内存值):

java -Xmx2g -Xms2g \
  -XX:+UseG1GC \
  -XX:+TieredCompilation \
  -XX:+UseCompressedOops \
  -Dspring.profiles.active=prod \
  -jar target/your-application.jar
  • Xmx/Xms:设置堆内存初始值与最大值,避免频繁GC(建议设为服务器可用内存的1/2~1/3)
  • UseG1GC:使用低延迟的G1垃圾收集器,适配Web应用的响应式需求
  • TieredCompilation:启用分层编译,提升JIT热点代码的编译效率
  • UseCompressedOops:压缩对象指针,节省内存并提升内存访问速度

4. 编译阶段启用字节码优化

在pom.xml中配置Maven编译插件,开启编译优化并关闭调试符号输出:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.11.0</version>
      <configuration>
        <!-- 匹配你的Java版本(如17对应Spring Boot 3.x) -->
        <release>17</release>
        <!-- 开启字节码优化 -->
        <optimize>true</optimize>
        <!-- 关闭调试信息输出 -->
        <debug>false</debug>
        <debuglevel>none</debuglevel>
      </configuration>
    </plugin>
  </plugins>
</build>

5. 基准测试前预热JVM

Java的JIT编译器需要预热才能将热点代码编译为机器码,正式测试前先发起至少1000次请求完成预热。例如用wrk工具:

# 预热30秒
wrk -t4 -c100 -d30s http://localhost:8080/hello
# 正式测试60秒
wrk -t4 -c100 -d60s http://localhost:8080/hello

验证优化生效

启动应用后,检查日志输出是否包含:

The following 1 profile is active: "prod"

同时确认无DevTools相关日志,日志级别以INFO/WARN为主。

按照以上步骤优化后,Spring Boot的Hello World应用性能应能达到Express级(甚至更高),与Rust(Actix)的差距会缩小至3-5倍范围内。

内容的提问来源于stack exchange,提问作者kathmandui

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 03:55:38