我试图使用jmeter简化随机性能测试的实现。 我们之前已经这样做了,但它花了很多时间。
问题是,如果我有并发用户的数量(基于总访问次数和已用时间),我假设经过的时间不会改变。但是,如果在压力情况下服务器花费超过预期,用户将堆叠起来,因为有些用户不会在预期时间内离开。因此,真正的并发将不同于计算。
传统测试将保留预先建立的虚拟用户(如果增加与否则无关紧要),即使由于服务器响应较慢而经过的时间也会增加。 如果服务器响应较慢,则jmeter将执行较少的迭代。我不想这样做,我想在必要时创建更多主题以保持到达率。
有什么办法可以在一段时间内在常量线程上设置用户到达率吗?
答案 0 :(得分:1)
我在性能测试中习惯性地使用基于到达率的负载强度。您必须考虑下一个问题,因为模型比基于虚拟用户的模型更准确,但是您需要克服很多复杂性。
1.-对于Jmeter,您需要更改线程的调度程序,因为默认情况下插件-in效率低。(不要担心商业产品有同样的问题而且价格昂贵) 2.-你必须建立一个到达率的模型。使用经验分布或其他众所周知的如泊松,二郎等来改变时间。 3.-活跃用户和并发性的结果是:到达率,工作量和工作之间思考时间的激烈。你无法控制变量虚拟用户,没有意义,这是驱动测试的传统方式的变化。例如,您可以使用谷歌分析的数据并构建一个stocastic模型,您不需要设置de虚拟用户,因为这是测试的结果。测试给出答案当我有确定的到达率时,活动的用户/会话数是多少。 4.-但点数3有一个非常重要的问题,因为负载平台需要比基于虚拟用户的传统测试更多的容量。
与旧的虚拟用户方法相比,这是一种更准确但更复杂的交易,其复杂性较低但不可靠。
我习惯在B2C网站上进行这种测试,每小时有500.000次访问,每小时有5-7百万页。使用此负载标签构建精度测试的唯一方法是使用基于到达速率的模型。
答案 1 :(得分:0)
我认为没有任何直接的方法可以达到你想要的效果。
但你可以尝试一下,虽然它不是正确的方法(自定义插件是最好的选择,请检查jmeter插件。)
1. keep no of threads very high
2. set ramp up duration as it will set the arrival rate which you need
3. set the expected test duration
示例:
假设我想以每秒2个用户的到达率进行10分钟的测试 所以价值观将是,
no of threads : 2000
ramup : 600
test duration : 600
另一个选项是Stepping Thread Group Plugin。 它应该符合你的目的。
答案 2 :(得分:0)
您有两种选择:
计时器的功能是延迟请求。因此,您创建了过多的线程,然后计时器将延迟它们以达到所需的到达率。
答案 3 :(得分:0)
我认为以下组合涵盖了99%的用例: