转载

【每日鲜蘑】升级到Spring Boot 2.2.7是否带来了性能的提升

简单介绍

话说,在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 排版

原文  https://juejin.im/post/5eb6619f6fb9a0435f0941d9
正文到此结束
Loading...