【每日鮮蘑】升級到Spring Boot 2.2.7是否帶來了效能的提升

語言: CN / TW / HK

簡單介紹

話說,在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 排版

2.2