【问题标题】:Wrk vs Gatling benchmark test comparisonWrk vs Gatling 基准测试比较
【发布时间】:2020-07-04 09:17:32
【问题描述】:

使用 wrk,我运行以下命令:

wrk -t10 -c10 -d30s http://localhost:8080/myService --latency -H "Accept-Encoding: gzip"

结果,我得到 Requests/sec: 15000 并且没有错误

我正在尝试使用 Gatling 重现相同类型的测试。所以我尝试了以下方法:

scn.inject(
      rampUsersPerSec(1) to 15000 during (30 seconds)
    )

但结果,我得到了错误:

---- 错误 ------------------------------------------ --------------------------

i.n.c.AbstractChannel$AnnotatedSocketException: 无法分配 r 573 (42,44%) 请求地址:localhost/127.0.0.1:8080 i.n.c.AbstractChannel$AnnotatedSocketException:资源节奏 530 (39,26%) 很少不可用:localhost/0:0:0:0:0:0:0:1:8080 j.i.IOException: 过早关闭 247 (18,30%)

从 wrk,我相信我的服务器可以处理 15000 个请求/秒,但使用 Gatling 似乎并非如此。你知道为什么会有这样的差异吗?

【问题讨论】:

    标签: gatling wrk


    【解决方案1】:

    免责声明:Gatling 的创造者在这里

    你在比较苹果和橘子。

    使用 wrk,您可以在 30 秒内打开 10 个连接并尽可能快地循环。

    使用当前的 Gatling 设置,您将产生 225,015 个虚拟用户 ((1 + 15,000) / 2 * 30),每个用户都试图打开自己的连接。

    我推荐你阅读这篇关于picking injection profiles that make sense for your use case的文章。

    如果您真的想在此处执行与 wrk 相同的操作,则需要将您的场景包装在 during(30) 循环中,并将您的注入配置文件更改为 atOnceUsers(10)。

    您还可以选择使用shared connection pool

    那么,对于这种无逻辑的静态测试,您不能指望任何其他加载测试工具的速度与 wrk 一样快。

    还要注意:

    • Gatling 的 JVM 配置中存在一个错误,该错误已在 Gatling 3.4.0 中修复,这会损害这种简约的性能 超高吞吐量测试,见issue
    • Gatling 在 JVM 上运行,因此具有运行时,因此需要预热,启动吞吐量会低于预热的吞吐量

    【讨论】:

      猜你喜欢
      • 2014-04-24
      • 2018-02-15
      • 2015-10-21
      • 1970-01-01
      • 2018-06-27
      • 2016-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多