写点什么

Java Web 框架对比,原来 Webflux 性能最差。

作者:Kevin_913
  • 2023-10-28
    广东
  • 本文字数:687 字

    阅读完需:约 2 分钟

Java Web 框架对比,原来Webflux性能最差。

这一篇文章将对比通过不同方式创建的 java 应用程序的测试对比。

测试对象

  • Springboot Web:springboot web 应用。

  • Springboot Webflux:springboot webflux 应用。

  • Quarkus:Redhat 推出的一个更偏向容器的框架。

  • Vert.x:Eclipse 基于 Netty 做的二次开发的一个框架。

测试条件

  • 全部使用默认配置。

  • 数据库连接池最大数设置为 50,由于 vert.x 机制不同,所以不需要设置。

  • 提供一个 Http 请求/rss接口,将从数据库查询 100 条记录。


select * from rssentry order by publish_at desc limit 100


  • 数据库连接池都已创建。

测试 plan

Jmeter 同时执行 4 个 http sample。


测试结果

问题

  • springboot webflux 在高并发情况下,性能下降很厉害,猜测跟默认的 workgroup size 偏小的缘故。

  • 通过观察数据库连接,vertx 会根据请求生成数据库连接,当有 100 个并发请求的时候,会生成 100 个数据库连接,但访问结束不会保留数据库连接,所以在数据库里看不到常驻的连接,而 springboot 和 quarkus 在数据库当中可以看到常驻连接数。而在需要创建数据库连接的情况下,表现跟 springboot 类似,猜测跟 pgpool 的 reactor 模式对数据库连接做了优化。

结论

  • 总体来说,springboot web 总体表现在默认配置下都是比较优秀的。

  • 并发不高的情况下,springboot web 和 springboot webflux 总体表现要比 quarkus 和 vertx 要好。

  • 并发高的情况下,springboot webflux 性能下降的很厉害。

  • 在数据库线程池不足的情况下,vertx 的表现要优化其他。

个人推荐

  • Vert.x 更偏向于原生的开发,在追求极致性能的情况下,推荐使用。

  • 用 Hotspot JVM 情况下,推荐使用 Springboot Web。

  • 使用 Native Image 的情况下,推荐使用 Quarkus,更容易集成。


测试代码https://github.com/kxu913/comparison

发布于: 刚刚阅读数: 5
用户头像

Kevin_913

关注

纸上得来终觉浅,绝知此事要躬行。 2019-02-25 加入

专注于代码和设计15+年。 主要涉及Java,Golang,云平台。

评论

发布
暂无评论
Java Web 框架对比,原来Webflux性能最差。_Java_Kevin_913_InfoQ写作社区