如何并行调用多个API进行负载测试(使用加特林)?

时间:2019-05-23 15:21:36

标签: load-testing gatling

我目前正在尝试使用Gatling加载测试我的API,但是我有一个非常具体的测试要执行。我想模拟一个虚拟用户,同时调用我的所有API(其中的16个)。我想重复多次,这样我可以了解一次同时调用所有API所需的平均时间。

我使用的方法是:

  • 为我的每个API创建一个方案。
  • 调用我的SetUp()中的每个方案
  • 在每种情况下以每秒1个请求的速度注入60个用户并保持60秒。

目标是要实现60次迭代。

仅供参考,我正在使用加特林3.1.2

//This is what all my scenarios look like

val bookmarkScn = scenario("Bookmarks").exec(http("Listing bookmarks")
                .get("/bookmarks")
                .check(status.is(200))
            )

//My setUp

setUp(
    bookmarkScn.inject(
        atOnceUsers(60)
    ).throttle(
        jumpToRps(1),
        holdFor(60)
    ),
    permissionScn.inject(
        atOnceUsers(60)
    ).throttle(
        jumpToRps(1),
        holdFor(60)
    ),

//Adding all the scenarios one after the other

).protocols(httpConfig)


我用这种方法得到了一些结果,但是它们根本不符合我的期望,如果我将测试进行太长时间,最终每次调用都会超时。

应该花比平时更多的时间(例如,从每个API的100ms到300ms)。

我的问题是:此方法正确吗?你能帮我实现我的目标吗?

1 个答案:

答案 0 :(得分:0)

您所拥有的应该可以工作,但是可能有一种更简单的方法来指定这种注入。代替

bookmarkScn.inject(
    atOnceUsers(60)
).throttle(
    jumpToRps(1),
    holdFor(60)
),

您可以使用

bookmarkScn.inject(
    constantUsersPerSec(1) during (60 seconds)
),

就您的结果而言,我希望问题出在加特林的下游-16位并发用户发出简单的GET请求对于加特林非常简单。您之间的应用或基础架构中的性能可能在其他地方有问题。