成功使用JMeter来分析我们平台的性能后,我得到了根据从去年日志中提取的每分钟交易数据来模拟24小时负载的请求。
此时,在jmeter中具有线程创建的静态性质,我想知道这是否容易实现。我和jmeter-plugins.org上的插件一起研究了常用的插件,但我还是找不到一种简单的方法来进行这种整形。
我正在寻找另一种方法来编写一个动态提供吞吐量整形计时器的groovy脚本,但我不确定这是否是正确的方法。
有什么建议吗?
更新: 我尝试了下面的组合(正如Alon和Dan建议的那样): - 一个线程组,一个循环线程和一个60秒延迟计时器;此线程从csv读取每分钟下一分钟的请求数,并将其传递给下一个线程组(使用groovy脚本和全局道具) - 第二个线程组具有固定数量的线程和一个常量吞吐量计时器,它由第一个线程组每分钟更新一次。
它部分工作但这里的限制是load / min在所有活动线程之间划分,因此即使同时加载请求改变,部分线程仍将等待执行。 我认为,为了进行正确的模拟,应该有一种方法,即在一分钟内未执行的所有线程都会被中断并重新启动。
所以有一个具体的例子: 我在第一分钟有100个请求,在第二分钟有5000个(这是真正的数据,有很大的变化) 在第一分钟已经启动了300个线程(这是我接受的并发连接的最大数量),但是,因为它们执行得非常快,所以它们将被延迟超过一分钟以满足计算的吞吐量, 因此,下一分钟的5000个请求没有机会被执行,因为许多线程仍处于休眠状态。
所以我正在寻找一种在需要更多吞吐量时中断休眠线程的方法。可能来自Groovy或修改一些JMeter代码。
谢谢, Dikran
答案 0 :(得分:4)
您应该使用JMeter的恒定吞吐量计时器。结合包含所有值的CSV文件,它应该可以正常工作。 看到这些链接: http://jmeter.apache.org/usermanual/component_reference.html#Constant_Throughput_Timer http://jmeter.apache.org/usermanual/component_reference.html#CSV_Data_Set_Config
最佳, 阿龙。
答案 1 :(得分:1)
使用JSR 223 + Groovy
进行脚本撰写
您有很多选项可以使用JMeter编写脚本:
虽然你可以懒惰并选择你所熟悉的语言,但要忘记它
使用最有效的选项,JSR223 + Groovy + Caching
(自外部脚本中的JMeter 2.8以及下一个即将推出的嵌入式脚本JMeter 2.9支持)。
使用Groovy就像添加一样简单
groovy-VERSION-all.jar
文件夹中的<JMETER_HOME>/lib
。
但是当然要确保您的脚本是必要且有效的,不要过时 在此处查看更多内容 - http://blazemeter.com/blog/jmeter-performance-and-tuning-tips