Beanshell vs JSR223 vs Java JMeter脚本:性能关闭你一直在等待!

摘要:
有几个选项可用于执行自定义JMeter脚本并扩展基线JMeter功能。这是乐队之战,JMeter风格。BeanshellV.JSR223V.JavaRequestSampler在我们之前的帖子中,JMeterPerformance和TuningTips我们建议使用JSR223+Groovy进行脚本编写。因此,如果你准备使用一次脚本,快速脏,欢迎使用Beanshell/Javascript/无论你喜欢什么。我们所需要做的就是添加一个BeanshellSampler并粘贴1Mb随机字符串生成代码。使用vars.get或JSR233Sampler的Parameters节加载测试结果Java请求组态JavaRequest是您自己的JavaSamplerClient实现,所有描述的方法都应该有适当的代码。

有几个选项可用于执行自定义JMeter脚本并扩展基线JMeter功能。查看最流行的扩展机制,比较性能并分析哪一个是最好的。

这是乐队之战,JMeter风格。

Beanshell V. JSR223 V. Java Request Sampler

在我们之前的帖子中, JMeter Performance和Tuning Tips由fantastik Philipe Mouwad编写)我们建议使用JSR 223 + Groovy进行脚本编写。这是最好的选择,因为Groovy脚本可以编译成本机Java代码(假设满足一些要求),因此Groovy脚本执行性能几乎与Java代码一样快。

因此,如果你准备使用一次脚本,快速脏(例如在测试开始时阅读配置文件),欢迎使用Beanshell / Javascript /无论你喜欢什么。

但是,如果您要通过脚本进行一些广泛的负载测试(即从计算数据构建大量HTTP请求),则需要考虑Groovy或自定义Java请求或JMeter Sampler。

为了进行比较,我们将使用相同的简单代码生成1Mb随机字母数字字符串。

增加图像import java.security.SecureRandom; BlazeMeter博客

比较指标将使用10个用户x 100次迭代收集,会话持续时间为1小时(标准BlazeMeter会话长度),负载生成将通过执行上述代码从单个JMeter控制台完成,并演示以下引擎的关键性能指标:

  • Beanshell(原样)

  • JSR223(Groovy作为语言,启用了编译缓存)

  • Java(作为JMeter Java Request Sampler)

在负载生成器端包含相关的CPU / RAM成本(BlazeMeter控制台)

测试将使用以下环境:

  • 测试类型 - JMeter测试(沙盒)

  • 线程 - 每个线程组10个线程

  • 服务器类型 - 大

  • 会话时间 - 1小时

  • 引擎 - 仅限控制台

  • 服务器 - 1

  • 每个引擎的线程 - 10

  • 加速 - 没有加速

  • 迭代 - 100

  • 服务器操作系统 - Linux

  • 服务器CPU - 2x

  • Java 7 x64 1.7.0_03

  • JVM参数 - -server -Xms3072m -Xmx6144m -XX:NewSize = 64m -XX:MaxNewSize = 128m -XX:MaxTenuringThreshold = 2 -Dsun.rmi.dgc.client.gcInterval = 600000 -Dsun.rmi.dgc.server.gcInterval = 600000 -XX:PermSize = 64m -XX:MaxPermSize = 64m

Beanshell采样器

组态

对于Beanshell,不需要先决条件,一切都可以开箱即用。我们所需要做的就是添加一个Beanshell Sampler并粘贴1Mb随机字符串生成代码。将测试脚本上传到BlazeMeter的测试仪表板并设置适当的线程,迭代和持续时间后,我们得到以下结果:

加载测试结果

增加图像BlazeMeter的负载测试结果

JSR233采样器

组态

如上所述,对于脚本,建议使用JSR233 + Groovy。JMeter不附带Groovy,需要单独下载。开始:

  1. Groovy网站下载下载最新的groovy二进制包

  2. 在“embeddable”分发文件夹下找到groovy-all - $ {VERSION} .jar并将其放到JMeter / lib文件夹中。或者将其上传到“文件”区域中的BlazeMeter,BlazeMeter会将其放入相应的位置

  3. 将JSR233 Sampler添加到Thread Group,将“groovy”指定为Language

  4. 将编译缓存键设置为唯一的

  5. 将1Mb随机字符串生成代码粘贴到脚本区域

重要提示:

使用.groovy文件而不是将Groovy代码保留在采样器中。但是,如果需要在采样器中直接使用代码,请确保已设置编译缓存密钥。如果您有> 1 JSR233 Sampler - 请确保它们使用不同的密钥

不要在Groovy脚本中将任何变量引用为$ {VAR}。使用vars.get(“VAR”)或JSR233 Sampler的Parameters节

加载测试结果

增加图像使用JSR233 Sampler加载测试结果

Java请求

组态

Java Request是您自己的JavaSamplerClient实现,所有描述的方法都应该有适当的代码。绝对最小值是runTest()方法的覆盖,但如果您打算参数化Java Request,则需要提供适当的逻辑来读取输入和请求流的条件解释,以确定Sampler是否通过。

通过Java Request生成1Mb随机字符串的示例代码如下所示:

增加图像Java Request是您自己的JavaSamplerClient实现,

编译类需要放在JMeter安装的/ lib / ext文件夹中,最好是.jar形式,这样JMeter可以自动拾取它,否则你需要修改JMeter类路径。

使用BlazeMeter时,只需将.jar文件与您的脚本和其他扩展程序(如果有的话)一起上传,BlazeMeter引擎就会将其取出。

2013/12/05 11:09:38 INFO -BlazeMeter:BlazeMeter启动脚本完成

2013/12/05 11:09:39 INFO -jmeter.protocol.java.sampler.JavaSampler:创建的类:com.blazemeter.JavaRequest

加载测试结果

增加图像BlazeMeter上的Java请求加载报告结果

结论

增加图像比较Beanshell v JSR233 v Java

建议将Beanshell用于一次性活动,例如在单线程setUp线程组中的某处读取配置文件,或者在不存在使用替代方法的情况下。

JSR233 / Groovy是脚本编写的合理选择,但只有“编译”功能。

获胜者是.........Java Request,提供卓越的性能和前沿的生产力!

免责声明:文章转载自《Beanshell vs JSR223 vs Java JMeter脚本:性能关闭你一直在等待!》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Nginx与Lua样本稳定指数PSI下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

jmeter请求元件之用户自定义变量

目的是:设置用户自定义变量,使得测试参数可以批量添加和修改。不需要一个个打开http请求界面再去修改参数和添加 以下为个人学习总结整理: 1、右键线程组--配置元本件--用户定义的变量 2、在自定义变量中,添加多个变量,每个变量值对应名称,如何把它们放到对应的请求上面呢? 引用符号:${变量名} 3、把它他以引用形式放到请求参数中 设置好,发送请...

jmeter压力测试的简单实例+badboy脚本录制

 JMeter的安装:在网上下载,在下载后的zip解压后,在bin目录下找到JMeter.bat文件,双击就可以运行JMeter.  http://jmeter.apache.org/ 在使用jmeter前要先下载jdk包,配置java环境。(参见Java环境配置教程) 配置完成后在运行窗口检查一下java -version确定java环境配置完成。 一、...

jmeter简单性能压测和分布式负载

  现在流行的性能测试工具有大家熟知的LR,还有一个就是越来越火的jmeter,因为它是免费开源的,不像LR那样要想进行商业化压测使用必须花大钱购买使用权限。另外一个是他可以在官方网站下载动态库拓展很多的功能。下面来简单说下jmeter进行压测以及用jmeter进行分布式负载。   一、jmeter进行压测    (1)、首先打开jmeter制作一个简单的...

jmeter远程多机负载进行性能测试

使用多台机器产生负载的操作步骤如下: (1)确保所有的agent 机器上面都安装好了jmeter和JDK (2) 运行所有 agent 机器上的jmeter-server 文件(假定使用两台机器192.168.9.99 和192.168.9.130 作为agent) (3)在controller机器的jmeter的bin目录下,找到jmeter.prope...

【转】JMeter学习(三十二)属性和变量

一、Jmeter中的属性: 1、JMeter属性统一定义在jmeter.properties文件中,我们可以在该文件中添加自定义的属性 2、JMeter属性在测试脚本的任何地方都是可见的(全局),通常被用来定义一些JMeter使用的默认值,可以用于在线程间传递信息。 3、JMeter属性可以在测试计划中通过函数 _P 进行引用,但是不能作为特定线程的变量值...

Jmeter生成html报告

进入到jmeter安全目录bin下,执行以下命令 基本命令格式: jmeter -n -t test.jmx(性能测试脚本) -l testResult.csv(测试监听结果文件) -e -o testReport(生成报告的文件夹名,不需要创建) 备注:命令参数说明如下 -h 帮助 -> 打印出有用的信息并退出-n 非 GUI 模式 ->...