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

How to call multiple APIs in parallel for load testing (using Gatling)?

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

我使用的方法是:

目标是对我想要的进行 60 次迭代。

仅供参考,我使用的是 Gatling 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 100 毫秒到 300 毫秒)。

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

您所拥有的应该可以工作,但可能有更简单的方法来指定此注入。而不是

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

你可以使用

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

就您的结果而言,我认为问题出在 gatling 下游的某处 - 16 个并发用户发出简单的 GET 请求对于 Gatling 来说非常简单。您的应用程序或基础架构的性能可能在其他地方存在问题 in-between。