Spring WebFlux对比Spring MVC压测对比

1,325 阅读2分钟

目标

  • 50 100 200 300 并发分别压测基于Spring WebFlux和Spring MVC的程序
  • 总结Spring WebFlux对比Spring MVC的优势

准备工作

  • 准备一个基于Spring WebFlux和一个基于Spring MVC的工程
  • apache-jmeter-3.3.2:压测工具
  • jvisualVM:JVM指标监控

开始压测

指标1:50 并发,压测1分钟

  • Spring MVC

    • jmeter压测报告

在这里插入图片描述

    • JVM监控

    在这里插入图片描述

  • Spring WebFlux

    • jmeter压测报告

      在这里插入图片描述

    • JVM监控

      在这里插入图片描述


指标2:100 并发,压测1分钟

  • Spring MVC

    • jmeter压测报告

      在这里插入图片描述

    • JVM监控

    在这里插入图片描述

  • Spring WebFlux

    • jmeter压测报告

      在这里插入图片描述

    • JVM监控

      在这里插入图片描述


指标3:200 并发,压测1分钟

  • Spring MVC

    • jmeter压测报告

      在这里插入图片描述

    • JVM监控

    在这里插入图片描述

  • Spring WebFlux

    • jmeter压测报告

    在这里插入图片描述

    • JVM监控

    在这里插入图片描述


指标4:300 并发,压测1分钟

  • Spring MVC

    • jmeter压测报告

    在这里插入图片描述

    • JVM监控

      在这里插入图片描述

  • Spring WebFlux

    • jmeter压测报告

    在这里插入图片描述

    • JVM监控

    在这里插入图片描述

总结

Spring WebFlux 压测数据统计

指标总请求数TPS最大响应时间最小响应时间平均响应时间最大堆大小CPUMax Thread Number
50并发/分钟194671132445.216901310M左右44%左右20
100并发/分钟189125631519.924703310M左右46%左右19
200并发/分钟192001331995.428506280M左右45%左右20
300并发/分钟187574831255.280309410M左右45%左右19

Spring MVC 压测数据统计

指标总请求数TPS最大响应时间最小响应时间平均响应时间最大堆大小CPUMax Thread Number
50并发/分钟143168523860.663702700M左右42%左右最高120
100并发/分钟141241123537.416404400M左右42%左右最高125
200并发/分钟139916323314.323408400左右45%左右最高216
300并发/分钟133256422206.8235013最高达到了1.5GB以上41%左右最高217

结论

    在未进行任何参数调优的情况下,四次压测结果显示Spring WebFlux性能更优秀,单位时间处理请求数更多,TPS更高(高很多,提高35%以上),并且,在内存使用和线程资源上也更加优秀,Spring WebFlux在四次压测中处理任务的线程数几乎是不变的,只有十几个,而Spring MVC并发越高创建的任务线程也越多,这都得益于Spring WebFlux使用的Netty+Reactor异步非阻塞的模式。