簡單介紹
話說,在Spring Boot 2.2中,針對性能這一點,做了大幅的優化。應用程式的啟動速度將變得更快,記憶體佔用也會變得更少。那我用已經在線上執行的專案測試下,是不是真的吧。
專案簡單描述下,原來的Spring Boot版本是2.1.3,計劃升級到2.2.7,兩者進行對比。當然,只是升級版本並換下埠號,其他不做變更。容器是Undertow
。
啟動時間
2.1.3.RELEASE
Started SyncApplication in 11.747 seconds (JVM running for 12.292)
複製程式碼
2.2.7.RELEASE
Started SyncApplication in 11.955 seconds (JVM running for 12.577)
複製程式碼
總結
在不更改配置的情況下,啟動時間沒什麼變化,比較三次啟動記錄的話,其實2.1.3.RELEASE
更快一些。不過,Spring Boot 2.2
為了加快應用的啟動,還增加一個全域性延遲初始化的配置引數spring.main.lazy-initialization
,設定為true後啟動時間如下:
Started SyncApplication in 13.123 seconds (JVM running for 13.783)
複製程式碼
啟動後最小記憶體【GC後】
2.1.3.RELEASE
已用: 47.7Mb
已提交: 1.1Gb
活動執行緒: 34
執行緒峰值: 37
已載入類: 15511
複製程式碼
2.2.7.RELEASE
已用: 37.4Mb
已提交: 1.6Gb
活動執行緒: 33
執行緒峰值: 35
已載入類: 15519
複製程式碼
總結
2.2.7.RELEASE
初始記憶體佔用還是比較小,只不過啟動後擴張比較猛,執行緒數也少了不少。2.1.3.RELEASE
申請記憶體是小梯度增長的。
簡單測試
2.1.3.RELEASE
Running 20s test @ http://127.0.0.1:9801/sync/welcome
4 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 24.42ms 19.78ms 261.02ms 67.57%
Req/Sec 1.09k 320.95 1.73k 68.72%
Latency Distribution
50% 11.95ms
75% 44.17ms
90% 46.44ms
99% 86.46ms
86984 requests in 20.05s, 13.27MB read
Requests/sec: 4337.66
Transfer/sec: 677.76KB
複製程式碼
2.2.7.RELEASE
Running 20s test @ http://127.0.0.1:9802/sync/welcome
4 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 22.23ms 16.77ms 176.80ms 66.22%
Req/Sec 1.20k 348.48 1.82k 66.71%
Latency Distribution
50% 13.22ms
75% 36.49ms
90% 44.61ms
99% 72.03ms
95815 requests in 20.05s, 14.62MB read
Requests/sec: 4778.59
Transfer/sec: 746.65KB
複製程式碼
總結
2.2.7.RELEASE
的QPS比 2.1.3.RELEASE
高一丟丟,但在記憶體佔用少並沒有多少優勢,而且在預熱的時候,發現2.2.7.RELEASE
會有CPU的飆升,後續測試又迴歸正常了。
歸納
Spring Boot
的新版本還是不錯的,在行業裡,Spring
的穩定性和可靠性是值得信賴的,希望越來越好。
本文使用 mdnice 排版