Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 如何在Gatling中实现线程的特定计数_Multithreading_Scala_Performance Testing_Load Testing_Gatling - Fatal编程技术网

Multithreading 如何在Gatling中实现线程的特定计数

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

有没有可能将Gatling场景设置为以特定线程数运行?例如,我希望在1小时内在2500个线程中执行1M个请求

另外,每个场景(在安装程序(scn.inject())中)是否将在不同的线程中运行?“线程”在Gatling定义中的含义是什么?它与Java中的相同吗

我找到了一个,但这并不完全是我需要的(在主题开始的情况下,他只需要3个线程,但对我来说,这更重要)

我有

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(“/”)
)
设置(
(用于{
我