如何并行调用多个API进行负载测试(使用Gatling)?
How to call multiple APIs in parallel for load testing (using Gatling)?
我目前正在尝试使用 Gatling 对我的 API 进行负载测试,但我有一个非常具体的测试要执行。我想模拟一个虚拟用户同时调用我所有的 API(其中 16 个)。我想重复多次,这样我就可以了解我的 API 被同时呼叫时响应所需的平均时间。
我使用的方法是:
- 为我的每个 API 创建一个场景。
- 调用我的 SetUp() 中的每一个场景
- 在每个场景中注入 60 个用户,限制为每秒 1 个请求并保持 60 秒。
目标是对我想要的进行 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。
我目前正在尝试使用 Gatling 对我的 API 进行负载测试,但我有一个非常具体的测试要执行。我想模拟一个虚拟用户同时调用我所有的 API(其中 16 个)。我想重复多次,这样我就可以了解我的 API 被同时呼叫时响应所需的平均时间。
我使用的方法是:
- 为我的每个 API 创建一个场景。
- 调用我的 SetUp() 中的每一个场景
- 在每个场景中注入 60 个用户,限制为每秒 1 个请求并保持 60 秒。
目标是对我想要的进行 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。