Wrk与Gatling基准测试比较

问题描述 投票:0回答:1

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

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

结果,我获得了每秒请求数: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:8080i.n.c.AbstractChannel $ AnnotatedSocketException:资源速度530(39,26%)几乎不可用:localhost / 0:0:0:0:0:0:0:0:1:8080j.i.IOException:过早关闭247(18,30%)

从wrk,我相信我的服务器可以处理15000个请求/秒,但是使用Gatling,情况似乎并非如此。您知道为什么会有如此不同吗?

gatling wrk
1个回答
0
投票

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

您正在比较苹果和橙子。

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

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

我建议您阅读有关picking injection profiles that make sense for your use case的文章。

[如果您真的想和这里的wrk做同样的事情,则需要将您的方案包装在一个after(30)循环中,并将注入配置文件更改为atOnceUsers(10)。

您还可以选择使用shared connection pool

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

还请注意:

  • Gatling的JVM配置有错误(将在下一个版本)以这种简约的方式损害了性能超高通量测试,请参见issue
  • Gatling在JVM上运行,因此具有运行时,因此需要预热,引导吞吐量将比预热要低一些
© www.soinside.com 2019 - 2024. All rights reserved.