跳转到内容

性能测试

这一页记录的是一组基准测试结果,而不是“永远正确的性能结论”。
如果你要引用这些数据,最重要的不是只看数字,而是先理解测试对象、边界条件和它不包含什么。

本报告比较了四个Java Web框架的性能:Feat、Vert.x、Quarkus和Spring Boot。测试使用wrk工具,针对每个框架的Hello World和JSON响应接口进行了性能测试。

测试参数:4个线程,100个连接,持续60秒,开启延迟统计。

测试结论

根据测试结果,可以得出以下结论:

  • 在JSON响应接口测试中,Feat框架表现最佳,每秒处理请求数最多。
  • 在Hello World接口测试中,Feat框架表现最佳,每秒处理请求数最多。
Hello World 每秒请求数 Hello World 平均响应时间 JSON 响应每秒请求数 JSON 响应平均响应时间
测试类型框架每秒请求数平均响应时间 (ms)错误率 (%)
Hello WorldFeat158588.490.830.00
Hello WorldQuarkus80539.401.550.00
Hello WorldSpring Boot39952.103.870.00
Hello WorldVert.x84842.991.290.00
JSON 响应Feat158186.410.920.00
JSON 响应Quarkus81771.061.600.00
JSON 响应Spring Boot40531.542.470.00
JSON 响应Vert.x77179.811.400.00

这组基准测试最适合支持下面这种判断:

  • 在“非常轻的 HTTP 接口”场景下,Feat 的底座性能没有成为瓶颈
  • Feat 在简单请求路径上的吞吐能力是它的重要卖点之一

它不适合直接支持下面这些过度推断:

  • “所有真实业务场景里 Feat 都一定更快”
  • “换成 Feat 就一定能立刻省掉同等比例的机器成本”
  • “复杂业务系统的整体延迟一定会按同样比例下降”

这页最有价值的使用方式通常有三种:

  1. 你在做技术选型,需要知道 Feat 的底层性能大致处在什么级别
  2. 你已经确定要用 Feat,希望知道它适不适合高吞吐、低延迟场景
  3. 你在给团队解释为什么 Feat 的设计会从服务底座出发

不要照搬这页里的结论,直接套到自己系统上。
更合理的做法是:

  1. 保持业务逻辑尽量等价
  2. 固定硬件、JDK、并发和网络环境
  3. 区分“框架基准”和“业务基准”
  4. 先看吞吐,再看尾延迟和资源占用

如果你真正关心的是你的系统,而不是框架宣传页,那么自己的压测结果一定比这页更重要。