webflux压测

【webflux压测】我们分别基于WebMVC和WebFlux创建两个项目:mvc-with-latency和WebFlux-with-latency。
WebMVC和WebFlux项目测试结果图:

webflux压测
文章图片
WebMVC和WebFlux项目测试结果图.png 上图中:max-thread-200/max-thread-400是mvc-with-latency工程在最大线程数为200、400时的测试结果;
webflux是在默认情况下(即最大线程数是200)的测试结果。

Tomcat默认最大线程数是200;
通过在application.properties中增加:server.tomcat.max-threads=400设置最大线程数为400。
为了更明显的展示:给出吞吐量和响应时长的对比图

webflux压测
文章图片
吞吐量对比图.png 吞吐量对比图:在并发4000个用户之后,webflux的吞吐量仍呈线性增长,但同步实现则呈现增长放缓的状态。
webflux压测
文章图片
响应时长对比图.png 响应时长对比图:在并发3000个用户之后,webflux的响应时长仍为105左右,但同步实现的响应时长线性增长。
综上来说,结论就是相对于Servlet多线程的处理方式来说,Spring WebFlux在应对高并发的请求时,借助于异步IO,能够以少量而稳定的线程处理更高吞吐量的请求,尤其是当请求处理过程如果因为业务复杂或IO阻塞等导致处理时长较长时,对比更加显著。
参考: (6)Spring WebFlux性能测试——响应式Spring的道法术器-刘康的博客-51CTO博客

    推荐阅读