Multithreading 如何在Gatling中实现线程的特定计数
有没有可能将Gatling场景设置为以特定线程数运行?例如,我希望在1小时内在2500个线程中执行1M个请求 另外,每个场景(在安装程序(scn.inject())中)是否将在不同的线程中运行?“线程”在Gatling定义中的含义是什么?它与Java中的相同吗 我找到了一个,但这并不完全是我需要的(在主题开始的情况下,他只需要3个线程,但对我来说,这更重要) 我有Multithreading 如何在Gatling中实现线程的特定计数,multithreading,scala,performance-testing,load-testing,gatling,Multithreading,Scala,Performance Testing,Load Testing,Gatling,有没有可能将Gatling场景设置为以特定线程数运行?例如,我希望在1小时内在2500个线程中执行1M个请求 另外,每个场景(在安装程序(scn.inject())中)是否将在不同的线程中运行?“线程”在Gatling定义中的含义是什么?它与Java中的相同吗 我找到了一个,但这并不完全是我需要的(在主题开始的情况下,他只需要3个线程,但对我来说,这更重要) 我有 val scn = scenario("Test") .exec(mine) } setUp( scn.injec
val scn = scenario("Test")
.exec(mine)
}
setUp(
scn.inject(
rampUsers(1000000) over (3600)
)
).assertions(global.successfulRequests.percent.greaterThan(95))
正如您所引用的中所述,Gatling将用于对您的测试目标系统发出请求的线程数不是并发用户数。它是实现细节
Gatling使用UndertheHood并异步发出请求。这种异步性质意味着Gatling使用几个线程来触发所有请求。如果你想了解更多,请参阅。它使用Akka,Akka使用fork-join-pool和aprox。CPU核心数*2个线程(不确定为100%,请参阅文档)
正如在引用的主题中已经提到的,问题是您所说的“用户”是什么意思?
据我所知,您的目标是在您的系统上加载2500个并发用户。不管Gatling是使用2个线程还是1000个线程来实现这一点
因此,如果您想要2500个并发用户(每秒),只需编写:
setUp(
scn.inject( constantUsersPerSec(2500) during(3600) )
)...
另一方面,如果您想要2500个不同的群体(这是我不想要的),您也可以通过以下方式实现:
// `scn` have to be function, while scenarios should havce distinct name
def scn(name: String) = scenario(name)
.exec(
http("root").get("/")
)
setUp(
(for {
i <- 0 until 2500 // desired 2500
} yield {
scn(s"Test $i").inject(
rampUsers(1) over (3600)
)
}).toList // setUp can accept List[PopulationBuilder]
)
/`scn`必须是函数,而场景应具有不同的名称
def scn(名称:字符串)=场景(名称)
行政长官(
http(“根”).get(“/”)
)
设置(
(用于{
我