我正在尝试使用Apache Jmeter作为测试工具找出端点的吞吐量。
我需要在n threads(users) per second
处命中端点,并且每个线程应该只触发一个请求(样本)。
对于上述内容,我配置了bzm - 并发线程组。
配置一:
Target Concurrency: 100
Ramp Up Time(sec): 1
Ramp-up Steps Count: 1
Hold Target Rate Time(sec): 10
配置二:
Target Concurrency: 1000
Ramp Up Time(sec): 5
Ramp-up Steps Count: 5
Hold Target Rate Time(sec): 60
配置一:10秒内必须仅触发1000
个请求。 配置二:必须在60秒内触发60000个请求,即1000个/秒。
根据您的测试用例和测试持续时间设置,我认为您正在混淆线程和请求。
线程是虚拟用户。线程和请求不同。
加速是所有用户到达测试的应用程序服务器的时间。
请求由采样器模拟,但线程是用户的模拟。
请注意 -请求总数与吞吐量相关,而执行相同活动的活动线程数与并发性相关。
可以通过在测试计划级别使用恒定吞吐量计时器来实现要求。
恒定吞吐量计时器允许您维护服务器的吞吐量(请求/秒)。恒定吞吐量计时器只能暂停 JMeter 线程,以减慢它们的速度以达到目标吞吐量。此外,它仅在分钟级别工作,因此您需要正确计算爬坡期并让您的测试运行足够长的时间。
以下是解决方法:
- 计算实现目标吞吐量所需的线程数。公式为:
RPS * 最大响应时间(秒)
- 使用启动周期使线程相应地处于活动状态。
- 将循环计数值设置为
Forever
- 相应地设置测试持续时间。
由于恒定吞吐量计时器在分钟级别工作,因此要实现X
RPS,您必须将">目标吞吐量"值配置为X*60/min
,并将"计算吞吐量依据"值配置为">所有活动线程"。
例如,如果需要 1000 RPS,则应在恒定吞吐量计时器中60000/min
">目标吞吐量"值。
查看我在这些线程上的回答,以更简要地了解您的方案。
我应该如何计算以 Jmeter 为单位的爬坡时间
难以维持每秒请求数 (RPS)?
希望这有帮助!