SpringBoot性能優(yōu)化

一、掃描優(yōu)化

SpringBoot項目中的啟動類,會使用@SpringBootApplication 注解,該注解的作用掃描外部依賴項目(例如:Tomcat,SpringMVC,Transaction等)以及運行一些自動配置類。
@SpringBootApplication注解中包含了@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan等等,通過以下配置



通過debug啟動項目在控制臺中會打印出日志:



通過上面的日志可以看出需要掃描匹配的項=Positive matches: 需要匹配項 + Unconditional classes: 必須匹配項,那么掃描優(yōu)化就是將這些需要匹配的項直接通過@import注解直接引入,則節(jié)省出掃描時間。例:

如果啟動一個大的應(yīng)用程序或者將做大量的集成測試啟動應(yīng)用程序的時候,這種優(yōu)化方式可以減少啟動時間,避免加載其他不必要的資源,減少CPU的消耗。

二、JVM參數(shù)調(diào)優(yōu)

先了解兩個配置指令
(1)-Xmx:設(shè)置最大的java堆大小
(2) -Xms:設(shè)置Java堆棧的初始化大小
idea工具中配置jvm內(nèi)存大小


對當(dāng)前應(yīng)用程序的堆內(nèi)存最大配置為32M,初始配置為10M(可以根據(jù)自己的項目適當(dāng)縮小,有的項目縮小到1M或者更小會無法啟動,本人的機器設(shè)置為1M就無法啟動項目),設(shè)置好后,啟動項目,控制臺打印結(jié)果如下:

控制臺會頻繁的輸出GC和Full GC,因為配置的堆內(nèi)存太小的原因,堆內(nèi)存配置越大,GC和Full GC會出現(xiàn)的越少。在生產(chǎn)項目中,-Xmx和-Xms這兩個值應(yīng)該配置相同,并根據(jù)運行服務(wù)器硬件環(huán)境適當(dāng)去配置。頻繁的GC和Full GC是非常消耗CPU的性能的,JVM優(yōu)化的重要指標(biāo)就是不能頻繁出現(xiàn)Full GC。

監(jiān)控應(yīng)用的內(nèi)存使用,可以使用jdk提供的工具在jdk安裝bin目錄下jvisualvm.exe


三、根據(jù)項目采用合適的容器

現(xiàn)在最流行也最常用的就是tomcat容器,tomcat是默認(rèn)支持jsp的,當(dāng)然也可以去優(yōu)化tomcat,關(guān)閉tomcat對jsp的支持。如果不優(yōu)化tomcat也可以在項目中更換使用其他容器,例如:Undertow,該容器默認(rèn)是不支持jsp。減少一些其他不需要的支持來提升容器啟動和運行效率。

首先在pom.xml中排除使用tomcat容器



加入對Undertow容器的依賴



啟動容器運行結(jié)果:

測試性能是否提升可以使用jMeter壓測工具:



在項目中分別使用Tomcat和Undertow容器,然后使用jMeter工具進行壓測,然后對比分別使用兩個容器的并發(fā)處理能力。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容