我最近开始使用gatling进行性能和负载测试。根据他们的文档,有几种方法可以发送并发请求,例如:
rampUsersPerSec(1) to(100) during(1 minute)
这应该会线性增加每秒的用户数,但它有很多随机性。我想做的是每秒发送一定数量的请求,然后暂停,然后将用户增加一,然后重复。有点像:
import io.gatling.core.Predef._
import io.gatling.http.Predef._
class PricesSimulation extends Simulation {
// ...
// ...
object GetPrices {
// ...
}
val httpConf = http.baseURL("https://...")
val scn = scenario("scenario1").exec(...)
setUp(
scn.inject(
constantUsersPerSec(1) during(5 seconds),
nothingFor(5 seconds),
constantUsersPerSec(2) during(10 seconds),
nothingFor(5 seconds),
constantUsersPerSec(3) during(10 seconds),
nothingFor(5 seconds),
constantUsersPerSec(4) during(10 seconds),
nothingFor(5 seconds),
constantUsersPerSec(5) during(10 seconds)
// ...
constantUsersPerSec(100) during(10 seconds)
).protocols(httpConf)
)
}
所以基本上我试图将setUp
中的所有内容都减少为for循环,其中我将constantUsersPerSec的arg增加一(或等效)。然而,我的scala知识非常有限,我惨遭失败......
答案 0 :(得分:0)
试试这个。
val steps = (constantUsersPerSec(1) during(5 seconds)) :: (2 to 100).toList.flatMap(i =>
List(
nothingFor(5 seconds),
constantUsersPerSec(i) during(10 seconds)
)
)
setUp(steps: _*).protocols(httpConf)