SpringBoot 性能調優


1,

默認情況下,我們會使用 @SpringBootApplication 注解來自動獲取應用的配置信息,但這樣也會給應用帶來一些副作用。使用這個注解后,會觸發自動配置( auto-configuration )和 組件掃描 ( component scanning ),這跟使用 @Configuration@EnableAutoConfiguration @ComponentScan 三個注解的作用是一樣的。這樣做給開發帶來方便的同時,也會有三方面的影響:

1、會導致項目啟動時間變長。當啟動一個大的應用程序,或將做大量的集成測試啟動應用程序時,影響會特別明顯。

2、會加載一些不需要的多余的實例(beans)。

3、會增加 CPU 消耗。

針對以上三個情況,我們可以移除 @SpringBootApplication @ComponentScan 兩個注解來禁用組件自動掃描,然后在我們需要的 bean 上進行顯式配置:

2,更換http 服務器,將內置的tomcat更換成Undertow 

 

默認情況下,Spring Boot 使用 Tomcat 來作為內嵌的 Servlet 容器

 

可以將 Web 服務器切換到 Undertow 來提高應用性能。Undertow 是一個采用 Java 開發的靈活的高性能 Web 服務器,提供包括阻塞和基於 NIO 的非堵塞機制。Undertow 是紅帽公司的開源產品,是 Wildfly 默認的 Web 服務器。

首先,從依賴信息里移除 Tomcat 配置:

 

      <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- undertow 服務器 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-undertow</artifactId>
    </dependency>

 

3,SpringBoot JVM參數調優

這個根據服務器的內存大小,來設置堆參數。

-Xms :設置Java堆棧的初始化大小

-Xmx :設置最大的java堆大小

實例參數-XX:+PrintGCDetails -Xmx32M -Xms1M

本地項目調優,就在IDE 里面配置以下就OK

 

如果項目被打成包之后,用命令執行

java -server -Xms32m -Xmx32m  -jar 項目.jar

 

項目打包,請殘照:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM