欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 艺术 > SpringBoot性能优化的12招

SpringBoot性能优化的12招

2025/9/6 9:38:42 来源:https://blog.csdn.net/weixin_51582215/article/details/148218162  浏览:    关键词:SpringBoot性能优化的12招

前言

不知道你在SpringBoot项目中,有没有遇到过下面这样的代码:

@GetMapping("/orders")
public List<Order> listOrders() {
    return orderDao.findAll(); 
}

一次性查询了所有的订单,全表扫描50万数据,导致接口查询性能很差,严重的时候可能会导致OOM问题。

问题定位

  • 未分页查询

  • 无缓存机制

  • 未启用批量处理

这次事故让我明白:性能优化必须贯穿开发全流程

图片

第1招:连接池参数调优

问题场景
默认配置导致连接池资源浪费,高并发时出现连接等待

错误配置

spring:
  datasource:
    hikari:
      maximum-pool-size: 1000 
      connection-timeout: 30000

数据库连接池的最大连接数,盲目设置过大,连接超时时间设置过长。

优化方案

spring:
  datasource:
    hikari:
      maximum-pool-size: ${CPU核心数*2} # 动态调整
      minimum-idle: 5
      connection-timeout: 3000 # 3秒超时
      max-lifetime: 1800000 # 30分钟
      idle-timeout: 600000 # 10分钟空闲释放

数据库连接池的最大连接数,改成根据CPU核心数动态调整。

将连接超时时间由30000,改成3000。

第2招:JVM内存优化

问题场景
频繁Full GC导致服务卡顿

我们需要优化JVM参数。

启动参数优化

java -jar -Xms4g -Xmx4g 
-XX:NewRatio=1 
-XX:+UseG1GC 
-XX:MaxGCPauseMillis=200 
-XX:InitiatingHeapOccupancyPercent=35
-XX:+AlwaysPreTouch

最大堆内存和初始堆内存都设置成了4G。

-XX:NewRatio=1,设置新生代和老年代各占一半。

垃圾收集器配置的是G1。

垃圾回收的最大停顿时间为200毫秒。

第3招:关闭无用组件

问题场景
自动装配加载不需要的Bean

优化方案

@SpringBootApplication(exclude = {
    DataSourceAutoConfiguration.class,

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词