0

在成功使用 JMeter 分析我们平台的性能后,我收到了根据从去年日志中提取的每分钟事务数据模拟 24 小时负载的请求。

在这一点上,在 jmeter 中具有线程创建的静态特性,我想知道这是否容易实现。我与 jmeter-plugins.org 上的插件一起研究了常用插件,但我仍然找不到一种直接的方法来进行这种整形。

我正在寻找另一种方法来编写一个动态提供吞吐量整形计时器的 groovy 脚本,但我不确定这是否是正确的方法。

有什么建议么?

更新:我尝试了以下组合(也如 Alon 和 Dan 建议的那样): - 一个线程组,一个循环线程和一个 60 秒延迟计时器;该线程每分钟从 csv 读取下一分钟的请求数并将其传递给下一个线程组(使用 groovy 脚本和全局道具) - 第二个线程组具有固定数量的线程和一个恒定吞吐量计时器,即第一个线程组每分钟更新一次。

它部分工作,但这里的限制是负载/分钟在所有活动线程之间分配,因此即使负载请求同时发生变化,部分线程仍将等待执行。我认为,为了进行正确的模拟,应该有一种方法可以中断所有未在一分钟内执行的线程并重新启动。

因此,举一个具体的例子:我在第一分钟有 100 个请求,第二分钟有 5000 个请求(这是具有很大变化的真实数据)在第一分钟已经启动了 300 个线程(这是我接受的最大并发连接数),但是,因为它们执行速度非常快,为了满足计算的吞吐量,它们将延迟一分钟以上,因此下一分钟的 5000 个请求没有机会执行,因为许多线程仍在休眠。

所以我正在寻找一种在需要更多吞吐量时中断睡眠线程的方法。可能来自 Groovy 或通过修改一些 JMeter 代码。

谢谢, 迪克兰

4

2 回答 2

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

最好的,阿隆。

于 2013-10-03T10:15:45.330 回答
1

用于JSR 223 + Groovy脚本编写
您有很多选项可以使用 JMeter 编写脚本:

  1. 豆壳
  2. BSF 和所有支持的语言 Javascript、Scala、Groovy、Java ...
  3. JSR223 和所有支持的语言 Javascript、Scala、Groovy、Java ...

尽管您可以偷懒并选择您知道的语言,但请忘记它。
使用最有效的选项,即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

于 2013-10-03T21:59:34.537 回答