spring boot性能 springboot性能调优参数_spring

 

查看之前的博客可以点击顶部的【分类专栏】

 

1、扫包调优

我们知道,SpringBoot 项目的启动类,只需要一个注解 @SpringBootApplication  就可以把所有的 Bean 对象添加到 Spring 容器中管理。

spring boot性能 springboot性能调优参数_SpringBoot调优_02

我们点击进入 @SpringBootApplication 注解,可以看到它其实是使用 

@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan

把我们项目中所有添加了注解的 Bean 都加载到 Spring 容器中,

spring boot性能 springboot性能调优参数_调优_03

这样一来,会递归的把我们一些没必要加入 Spring 容器管理的包、Bean 都加载到 Spring 容器了。这样会影响到我们启动项目的时间。

 

扫包调优策略:

使用定位扫包的方式,只把需要添加到 Spring 容器管理的包进行扫描即可。比如:

@ComponentScan(basePackages = {"com.study.controller","com.study.dao"})

 

2、SpringBoot 内部运行 JVM 参数调优

不懂 IDEA 下如何调整 JVM 参数?

示例:我们启动一个简单的 SpringBoot 项目,把 JVM 参数调整如下:

-XX:+PrintGCDetails -Xms1M -Xmx35M

解释:打印 GC 详细日志,初始化堆的大小为1M,最大堆大小为35M

spring boot性能 springboot性能调优参数_spring_04

然后启动项目,可以看到控制台日志输出:GC 在不断的进行垃圾回收。

spring boot性能 springboot性能调优参数_服务器_05

 

当 GC 不断的进行垃圾回收时,说明我们的内存已经不够了,极易导致 OutOfMemoryError(内存溢出错误)的异常.

 

3、更换 SpringBoot 默认的服务器

我们知道,SpringBoot 默认使用 Tomcat 服务器,我们可以更换一个 UnderTow 服务器,它的性能更好,只是目前推广还不够,很少人知道。

<dependencies>
        <!-- SpringBoot整合Web组件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <!-- 排除 tomcat 服务器 -->
            <exclusions>
                <exclusion>
                    <groupId>org.srpingframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- 引入 undertow 服务器 -->
        <dependency>
            <groupId>org.srpingframework.boot</groupId>
            <artifactId>spring-boot-starter-undertow</artifactId>
        </dependency>
    </dependencies>

 

调优策略:

1、初始堆值和最大堆内存内存设置相同,二者的值越大,吞吐量就越高。

2、减少垃圾回收次数。

3、最好使用并行收集器,因为并行收集器速度比串行吞吐量高,速度快。

4、设置堆内存新生代的比例和老年代的比例最好为1:2或者1:3。

5、减少GC对老年代的回收。