1

使用 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)
    )

但结果,我得到了错误:

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

incAbstractChannel$AnnotatedSocketException: Can't assign r 573 (42,44%) equested address: localhost/127.0.0.1:8080 incAbstractChannel$AnnotatedSocketException: Resource tempo 530 (39,26%) rarily available: localhost/0:0:0: 0:0:0:0:1:8080 jiIOException:过早关闭 247 (18,30%)

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

4

1 回答 1

6

免责声明:加特林的创造者在这里

你在比较苹果和橘子。

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

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

我建议您阅读这篇关于选择对您的用例有意义的注入配置文件的文章。

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

您还可以选择使用共享连接池

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

另请注意:

  • Gatling 的 JVM 配置中存在一个错误,该错误已在 Gatling 3.4.0 中修复,这会损害这种极简超高吞吐量测试的性能,请参阅问题
  • Gatling 在 JVM 上运行,因此具有运行时,因此需要预热,启动吞吐量将低于预热吞吐量
于 2020-03-23T21:54:27.940 回答