webflux压测

我们分别基于WebMVC和WebFlux创建两个项目:mvc-with-latency和WebFlux-with-latency。

WebMVC和WebFlux项目测试结果图:


webflux压测_第1张图片
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压测_第2张图片
吞吐量对比图.png

吞吐量对比图:在并发4000个用户之后,webflux的吞吐量仍呈线性增长,但同步实现则呈现增长放缓的状态。

webflux压测_第3张图片
响应时长对比图.png

响应时长对比图:在并发3000个用户之后,webflux的响应时长仍为105左右,但同步实现的响应时长线性增长。

综上来说,结论就是相对于Servlet多线程的处理方式来说,Spring WebFlux在应对高并发的请求时,借助于异步IO,能够以少量而稳定的线程处理更高吞吐量的请求,尤其是当请求处理过程如果因为业务复杂或IO阻塞等导致处理时长较长时,对比更加显著。

参考:

(6)Spring WebFlux性能测试——响应式Spring的道法术器-刘康的博客-51CTO博客

你可能感兴趣的:(webflux压测)