使用JMeter进行testing:如何每秒运行N个请求
我需要testing一下我们的系统是否可以每秒执行N个请求。 从技术上讲,一个API需要2个请求,另外2个请求,第三个请求需要6个请求。 但重要的是他们应该同时发生 – 所以每秒10个请求。 所以,在JMeter中,我已经创build了三个线程组,第一个定义了线程数1,并且斜升时间为0.第二个线程组相同,第三个线程组定义了线程数6和斜升时间0。这并不能保证它每秒钟都会运行它如何模拟? 我怎么看到结果 – 如果能够执行或不是?
谢谢!
和任何networkingtesting一样,总是会有问题,尤其是延迟问题 – 即使你每秒能够准确发送6个数据包,它们也会按顺序发送(这就是数据包的发送方式),而且可能不会全部发送第二,加上处理时间。
一般来说,当性能指标每秒特定于x时,会在一段时间内测量。 你的API甚至可以有一个缓冲区 – 所以你可以在技术上每秒发送6,但每秒处理5,缓冲区20,这意味着它可以罚20秒的stream量,因为你已经发送120,这会花费120/5 = 24秒来处理。 但是,除此之外,将会使缓冲区溢出。 所以要准确地发送6个一秒钟来testing是不够的。
在线程组中,您将线程(用户)的数量设置为6.然后运行它永远循环(勾选它或放在一个while循环中)并添加一个侦听器,如汇总报告和结果树。 你可以用来检查正确的东西的结果正在发送和回复(假设你validation了回应),并且在汇总报告中,你可以看到每个活动每小时发生多less次(显然乘以3600秒,但是由于这个不准确,最好运行一段很长的时间)。
现在可以运行初始负载testing,并且作为更准确的testing,您可以将其保持运行较长时间(浸泡testing),以查看是否存在其他问题 – 缓冲区溢出,内存泄漏或其他意外事件。
你可以使用ConstantThroughputTimer
。
引用JMeter的帮助文件如下:
18.6.4恒定吞吐量定时器这个定时器引入了variables暂停,计算的结果是保持总吞吐量(以每分钟采样数)尽可能接近给定数字。 当然,如果服务器无法处理吞吐量,或者其他定时器或耗时的testing元素阻止吞吐量,则吞吐量将会降低。 注意,尽pipe定时器被称为恒定吞吐量定时器,但吞吐量值不需要是恒定的。 它可以根据variables或函数调用来定义,并且在testing期间可以更改该值。
例如,我用它每秒生成40个请求:
<ConstantThroughputTimer guiclass="TestBeanGUI" testclass="ConstantThroughputTimer" testname="Constant Throughput Timer" enabled="true"> <stringProp name="calcMode">all active threads in current thread group</stringProp> <doubleProp> <name>throughput</name> <value>2400.0</value> <savedValue>0.0</savedValue> </doubleProp> </ConstantThroughputTimer>
这就是一个总结:
Created the tree successfully using performance/search-performance.jmx Starting the test @ Tue Mar 15 16:28:39 CET 2011 (1300202919244) Waiting for possible shutdown message on port 4445 Generate Summary Results + 3247 in 80,3s = 40,4/s Avg: 18 Min: 0 Max: 1328 Err: 108 (3,33%) Generate Summary Results + 7199 in 180,0s = 40,0/s Avg: 15 Min: 1 Max: 2071 Err: 378 (5,25%) Generate Summary Results = 10446 in 260,3s = 40,1/s Avg: 16 Min: 0 Max: 2071 Err: 486 (4,65%) Generate Summary Results + 7200 in 180,0s = 40,0/s Avg: 14 Min: 0 Max: 152 Err: 399 (5,54%) Generate Summary Results = 17646 in 440,4s = 40,1/s Avg: 15 Min: 0 Max: 2071 Err: 885 (5,02%) Generate Summary Results + 7199 in 180,0s = 40,0/s Avg: 14 Min: 0 Max: 1797 Err: 436 (6,06%) Generate Summary Results = 24845 in 620,4s = 40,0/s Avg: 15 Min: 0 Max: 2071 Err: 1321 (5,32%)
但是我在我的networking里面运行这个testing。
使用吞吐量整形计时器
我有类似的问题,这里有两个解决scheme,我发现:
解决scheme1:
您可以使用“步进线程组”(允许在设定的时间段内设置线程数增加阶段)。 吞吐计时器允许您设置线程每分钟可发送的样本数量(例如,如果将其设置为1,则线程每分钟只会发送一个请求)。 另外,您可以将吞吐计时器应用于线程组中的所有线程,或者为每个线程设置自定义计时器。 了解更多关于吞吐量计时器在这里: https : //www.blazemeter.com/blog/how-use-jmeters-throughput-constant-timer
解决scheme2:
使用“设置线程组”。 你可以计算线程数和减less时间来获得所需的每秒线程数。