SpringBoot啟動優化
顯示聲明掃包范圍:
即不使用@SpringBootApplication默認掃包,使用@ComponentScan(basePackages = { "com.xxx.controller" ,"com.xxx.service" })顯示聲明掃包范圍。
原因是@SpringBootApplication默認掃包,掃的是啟動類下的所有子包,實際開發場景中有很多包是不需要掃的,所以用默認的掃包會去掃很多本來就不用掃的包。
驗證是否有優化效果的時候,如果是自己寫的demo,驗證不出來,因為包和類太少了,可以用公司的實際項目驗證一下,啟動會快很多。
SpringBoot運行優化
使用Undertow服務器:
默認情況下,SpringBoot使用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>
Tomcat 與 Undertow 吞吐量對比(在本人電腦上實際測試):
SpringBoot JVM參數調優:
根據服務器的內存大小,來設置堆參數。
-Xms :設置Java堆棧的初始化大小
-Xmx :設置最大的java堆大小
實例參數-XX:+PrintGCDetails -Xmx32M -Xms1M
本地項目調優
外部運行調優
java -server -Xms32m -Xmx32m -jar springboot_v2.jar