我只想用一个线程组执行一个测试。我想运行n个不同的线程。假设测试需要1秒,然后我可以设置threads=n和ramp-up=1,loop=1。我的想法是,如果我想让测试运行更长时间,我应该增加上升秒数,并以相同的比例增加循环数。我在这里读到了这个想法:
http://www.testingjournals.com/5-must-know-features-thread-group-jmeter/
在场景2的循环部分,它说:每5秒(100/20(就会有4个线程/请求到达服务器
但我不明白这是意味着4个线程在5秒内均匀分布,还是意味着每5秒就会同时触发4个请求。
如果我想测试这个完全相同的测试,但持续更长的时间,该怎么办?我不想要更多的线程,因为每个线程都有连接开销。所以我希望同样的n个线程在一秒钟内均匀地运行,持续越来越多的秒。我如何才能确保在我希望的时间范围内使用相同的线程并均匀分布?我应该使用恒定吞吐量计时器吗?如果是这样的话,应该在循环和提升配置中设置什么?
如果您的目标是每秒执行X个请求,请选择以下测试元素之一:
- 恒定吞吐量计时器
- 精确吞吐量计时器(自JMeter 4.0起提供(
- 吞吐量整形定时器(可通过JMeter插件管理器安装(
以上所有操作都可以暂停JMeter线程,以便将吞吐量(每单位时间的请求(限制在给定数量。关于设置线程组:
- 线程数:应该足够才能达到目标吞吐量。在
Throughput Shaping Timer
的情况下,您可以使用并发线程组并通过反馈功能连接它们-在这种情况下,如果当前数量不足以达到/保持每秒所需的请求数量,JMeter将能够自动启动额外的线程 - 循环:勾选
forever
- 您可以使用线程组中的
Scheduler Configuration -> Duration (seconds)
设置所需的测试持续时间
让我们看看场景
–场景2:线程计数=20,上升时间(秒(=100&循环计数=4每5秒(100/20(就会有4个线程/请求到达服务器。一旦第一个线程完成第一轮执行,它将通过执行相同的HTTP请求来启动第二个循环。执行持续到所有20个线程执行所有HTTP请求4次。
总共有20个线程,这些线程将在100秒内平均执行
意味着100/20=5秒间隔,直到线程创建之间
注意循环计数=4,然后它将在每个线程内执行请求4次
请注意,时间是近似的,而不是准确的
因此,斜升期适用于不创建均匀分布的新线程。
有关更多受控执行,请参阅JMeter插件的UltimateThreadGroup
"Ultimate";意味着将不需要更多的线程组插件。JMeter中每个人都需要的功能,它们最终可用:
无限数量的日程记录
每个时间表的单独上升时间、停机时间、飞行时间记录
当然,还有值得信赖的负载预览图