一物臂、掃描優(yōu)化
SpringBoot項目中的啟動類饭庞,會使用@SpringBootApplication 注解或渤,該注解的作用掃描外部依賴項目(例如:Tomcat辽聊,SpringMVC具被,Transaction等)以及運行一些自動配置類蛤袒。
@SpringBootApplication注解中包含了@SpringBootConfiguration嘹锁、@EnableAutoConfiguration激涤、@ComponentScan等等衷蜓,通過以下配置
通過debug啟動項目在控制臺中會打印出日志:
通過上面的日志可以看出需要掃描匹配的項=Positive matches: 需要匹配項 + Unconditional classes: 必須匹配項累提,那么掃描優(yōu)化就是將這些需要匹配的項直接通過@import注解直接引入,則節(jié)省出掃描時間磁浇。例:
如果啟動一個大的應用程序或者將做大量的集成測試啟動應用程序的時候斋陪,這種優(yōu)化方式可以減少啟動時間,避免加載其他不必要的資源置吓,減少CPU的消耗无虚。
二、JVM參數調優(yōu)
先了解兩個配置指令
(1)-Xmx:設置最大的java堆大小
(2) -Xms:設置Java堆棧的初始化大小
idea工具中配置jvm內存大小
對當前應用程序的堆內存最大配置為32M衍锚,初始配置為10M(可以根據自己的項目適當縮小友题,有的項目縮小到1M或者更小會無法啟動,本人的機器設置為1M就無法啟動項目)戴质,設置好后度宦,啟動項目,控制臺打印結果如下:
控制臺會頻繁的輸出GC和Full GC告匠,因為配置的堆內存太小的原因戈抄,堆內存配置越大,GC和Full GC會出現的越少后专。在生產項目中划鸽,-Xmx和-Xms這兩個值應該配置相同,并根據運行服務器硬件環(huán)境適當去配置戚哎。頻繁的GC和Full GC是非常消耗CPU的性能的裸诽,JVM優(yōu)化的重要指標就是不能頻繁出現Full GC。
監(jiān)控應用的內存使用型凳,可以使用jdk提供的工具在jdk安裝bin目錄下jvisualvm.exe
三丈冬、根據項目采用合適的容器
現在最流行也最常用的就是tomcat容器,tomcat是默認支持jsp的甘畅,當然也可以去優(yōu)化tomcat殷蛇,關閉tomcat對jsp的支持实夹。如果不優(yōu)化tomcat也可以在項目中更換使用其他容器,例如:Undertow粒梦,該容器默認是不支持jsp。減少一些其他不需要的支持來提升容器啟動和運行效率荸实。
首先在pom.xml中排除使用tomcat容器
加入對Undertow容器的依賴
啟動容器運行結果:
測試性能是否提升可以使用jMeter壓測工具:
在項目中分別使用Tomcat和Undertow容器匀们,然后使用jMeter工具進行壓測,然后對比分別使用兩個容器的并發(fā)處理能力准给。