如何使用 JMeter 负载测试 https 端点获得高 rps

How to get high rps with JMeter load testing https endpoint

我正在尝试使用 JMeter 测试我的 https 端点。我想每秒至少发出 10000 个请求,但是当我将线程数设置为 10000 时,我得到的 rps 会少很多,大约 500。

我已经尝试将线程数设置为 1000 和 100,令人惊讶的是我得到了相同数量的 rps。我正在使用 HTTP Sampler,并且 "use Keep-Alive" 设置为 true。当我查看统计数据时,我发现当使用 100 个线程时,它使用了 Keep-Alive 并且 connect_time 大约是 100 毫秒,但是当线程数更高时 connect_time 增长,就像它停止重用连接。

我知道这不是服务器问题,因为我已经尝试用 Yandex.Tank 和 phantom 测试同一个端点,它可以很容易地保持每秒 10 000 个请求,问题是它不能使用响应数据来发出进一步的请求,这就是我必须使用 JMeter 来完成此任务的原因。

我希望您尝试使用一台机器来实现这一点。尝试使用多机或 jmeter 分布式模式。

https://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.pdf https://www.blazemeter.com/blog/how-to-perform-distributed-testing-in-jmeter/ https://blazemeter.com/blog/3-common-issues-when-running-jmeter-scripts-and-how-solve-them/

我假设这是机器无法产生那么多负载的问题。通常,我每台机器最多使用 300 个线程,但这取决于机器配置。只需检查机器是否有问题,多台机器是否能够产生更多负载,考虑到服务器没有任何问题。

希望这对您有所帮助。

更新:-通常我的现代机器可以处理 200-500。 请检查以下 link 以获得更多信息:-

1.How do threads and number of iterations impact test and what is JMeter’s max. thread limit
2.https://www.blazemeter.com/blog/what%e2%80%99s-the-max-number-of-users-you-can-test-on-jmeter/ .

这可以通过使用 "Stepping thread group" 来完成。它将允许您在指定时间内每秒发送 10000 个请求。参考下图。

Stepping Thread Group

从下方下载 jar link。

https://jmeter-plugins.org/wiki/SteppingThreadGroup/