正如topic你引,即加特林会用火,避免测试目标系统的请求的线程数是不是并发用户数的说明。它是实现细节。
Gatling在底层使用Akka并异步发出请求。这种异步性意味着Gatling正在使用一些线程来触发所有请求。如果您想了解更多信息,请参阅gatling-akka-defaults.conf。它使用Akka Default Dispatcher,它使用fork-join池和aprox。 CPU核心数量* 2个线程(在100%不确定,请参阅doc)。
正如已经在引用的主题中提到的,问题是你是什么意思的“用户”?。
据我所知,你的目标是让你的系统有2500个并发用户。加特林是否会使用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]
)
人群应该被用来注入不同的情景或在同一时间以自己的速度和持续时间的不同类型的用户。例如,参见Advanced Tutorial, Step 2。它们不是为了模拟并发用户。你可以直接从代码中看到这个解决方案是可能的,但是很麻烦。