如何使jmeter在很短的时间间隔内启动多个请求

如何使jmeter在很短的时间间隔内启动多个请求,jmeter,load-testing,Jmeter,Load Testing,我想用500k API调用对我的API进行负载测试 我做了一个JMeter测试,从.csv文件中读取一个访问令牌,并使用该令牌进行API调用 当然,从一台计算机上我不能做那么多的请求,所以我实现了分布式JMeter服务器,所以我在AWS上有一台主服务器和500台从服务器(t3.medium) 在测试中,我将循环设置为:1000(不是那么大的数字) 加速:5秒。我想测试持续5秒钟。因此,在5秒钟的时间内,总共需要进行500k API调用。测试何时开始并不重要,但我需要在这5秒钟的时间间隔内发出来自

我想用500k API调用对我的API进行负载测试

我做了一个JMeter测试,从.csv文件中读取一个访问令牌,并使用该令牌进行API调用

当然,从一台计算机上我不能做那么多的请求,所以我实现了分布式JMeter服务器,所以我在AWS上有一台主服务器和500台从服务器(t3.medium)

在测试中,我将循环设置为:1000(不是那么大的数字) 加速:5秒。我想测试持续5秒钟。因此,在5秒钟的时间内,总共需要进行500k API调用。测试何时开始并不重要,但我需要在这5秒钟的时间间隔内发出来自所有从属服务器的所有请求

这里的问题是,测试总是需要更长的时间。例如,发出所有请求大约需要3分钟,服务器的平均响应时间约为50毫秒

我如何配置JMeter,或者应该使用什么来保证所有500k API调用都是在5秒的时间间隔内进行的

这是主设备的输出示例:

Starting remote engines
Starting the test @ Thu Nov 08 18:28:02 UTC 2018 (1541701682517)
summary +      1 in 00:00:00 =    4.8/s Avg:   106 Min:   106 Max:   106 Err:     0 (0.00%) Active: 76 Started: 24 Finished: 0
summary + 286890 in 00:00:27 = 10817.9/s Avg:    66 Min:    44 Max:  1363 Err:     0 (0.00%) Active: 2837 Started: 22851 Finished: 25632
summary = 286891 in 00:00:27 = 10732.9/s Avg:    66 Min:    44 Max:  1363 Err:     0 (0.00%)
summary +  40389 in 00:00:30 = 1344.8/s Avg:    67 Min:    45 Max:  1630 Err:     0 (0.00%) Active: 6607 Started: 27937 Finished: 24366
summary = 327280 in 00:00:57 = 5765.6/s Avg:    66 Min:    44 Max:  1630 Err:     0 (0.00%)
summary +  47986 in 00:00:30 = 1600.6/s Avg:    70 Min:    45 Max:  1618 Err:     0 (0.00%) Active: 2847 Started: 70360 Finished: 70549
summary = 375266 in 00:01:27 = 4326.1/s Avg:    67 Min:    44 Max:  1630 Err:     0 (0.00%)
summary +   8420 in 00:00:31 =  274.6/s Avg:    62 Min:    45 Max:   335 Err:     0 (0.00%) Active: 1231 Started: 77129 Finished: 78934
summary = 383686 in 00:01:57 = 3267.9/s Avg:    66 Min:    44 Max:  1630 Err:     0 (0.00%)
summary +   9173 in 00:00:30 =  305.1/s Avg:    59 Min:    45 Max:  1107 Err:     0 (0.00%) Active: 166 Started: 80976 Finished: 83846
summary = 392859 in 00:02:27 = 2663.8/s Avg:    66 Min:    44 Max:  1630 Err:     0 (0.00%)
Remote engines have been started
Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
summary + 107131 in 00:01:11 = 1504.3/s Avg:    72 Min:    45 Max:  1230 Err:     0 (0.00%) Active: -484 Started: 86185 Finished: 88700
summary = 499990 in 00:03:39 = 2286.2/s Avg:    68 Min:    44 Max:  1630 Err:     0 (0.00%)
Tidying up remote @ Thu Nov 08 18:31:41 UTC 2018 (1541701901996)
这就是JMeter测试的样子
有一个合适的选择:和组合。可以通过将它们放在一起,以便在当前量不足以执行所需负载时,JMeter将启动额外的线程


一般性建议:

让我们缩小一点,您需要确保一台服务器可以在5秒内发送1000个请求,或者每秒发送200个请求。这意味着您的服务器响应时间应为5毫秒(包括建立连接和请求来回传输的时间)。据我所知,您的设置的最小响应时间是45毫秒,最大响应时间高达1,6秒。因此,使用当前设置似乎无法实现所需的吞吐量

现在您需要确定原因,以下是一些提示:

  • 您有5秒的加速时间,这意味着最后200个用户将在测试的第5秒启动,在任何情况下都需要5秒以上的时间
  • 是具有4 GB内存的2核机器。理论上,它应该足以启动1000个用户,但这取决于请求/响应的大小。使用或确保JMeter引擎未过载
  • 试着用更长的启动时间运行更长的测试,这可能会让您的应用程序有可能“预热”,并且您将能够定义您的应用程序可以支持的最大用户数,而不会显示性能下降

  • 有一个合适的选择:和组合。可以通过将它们放在一起,以便在当前量不足以执行所需负载时,JMeter将启动额外的线程


    一般性建议:

    让我们缩小一点,您需要确保一台服务器可以在5秒内发送1000个请求,或者每秒发送200个请求。这意味着您的服务器响应时间应为5毫秒(包括建立连接和请求来回传输的时间)。据我所知,您的设置的最小响应时间是45毫秒,最大响应时间高达1,6秒。因此,使用当前设置似乎无法实现所需的吞吐量

    现在您需要确定原因,以下是一些提示:

  • 您有5秒的加速时间,这意味着最后200个用户将在测试的第5秒启动,在任何情况下都需要5秒以上的时间
  • 是具有4 GB内存的2核机器。理论上,它应该足以启动1000个用户,但这取决于请求/响应的大小。使用或确保JMeter引擎未过载
  • 试着用更长的启动时间运行更长的测试,这可能会让您的应用程序有可能“预热”,并且您将能够定义您的应用程序可以支持的最大用户数,而不会显示性能下降