jmeter-如果不用使用缓存脚本时,请使用



我想知道检查 Cache compiled script if available何时错误,

遵循最佳实践,在某些情况下,不应使用缓存编译脚本的情况,但是不使用 ${varName}的示例是错误的,我进行了测试,其值是${varName}的更新值,而不是第一个值。

使用JSR 223元素时,建议检查汇编的缓存 脚本如果可用的属性,以确保脚本编译为 如果潜在的语言支持它。在这种情况下,请确保 脚本不使用$ {varname}使用任何变量,因为缓存将 仅取$ {varname}的第一值。

有人知道使用缓存是错误的吗?

编辑

我在脚本中使用$ {varname}检查,并且有类似的结果,没有缓存:

i在jmeter中定义了带有值1的 aa的变量,并创建了一个脚本:

def aa = "2";
aa = "3";
log.info("${aa}");

值1在两种复选框中都返回,因此它与缓存无关

也尝试使用beanshell尝试(没有def aa =" 2";)并获得相同的结果。

文档的含义是,每当$ {varname}具有不同的值时,将存储新的条目中的新条目最终将其填充无用的数据。

因此,在这种情况下,它是错误的,$ {varname}应替换为

vars.get(" varname")

实际上,如果您使用正确的jmeter语法

,我看不到取消选项的真正原因

由于上述风险,由于"非共识"原因,该选项默认情况下没有选中:

  • https://bz.apache.org/bugzilla/show_bug.cgi?id=56554
  • http://mail-archives.apache.org/mod_mbox/jmeter-dev/201212.mbox/ http://mail-archives.apache.org/mod_mbox/jmeter-dev/201301.mbox/

关于性能,它与不支持编译的语言完全相同,与Jmeter所做的第一件事是在使用复选框之前检查" SupportScompilable",请参见:

  • https://github.com/apache/jmeter/blob/trunk/src/src/core/org/apache/jmeter/jmeter/jsr223testestelement.java#l171

使用脚本引擎时不应使用缓存,如果编译脚本不支持缓存。由于只有Groovy能够编译脚本,因此您应该为Groovy勾选此框,并为其他引擎打开(无意义的代码块,每次将调用脚本时都会触发)

行为良好的凹槽引擎应:

  1. 在运行时编译脚本,以避免每次解释
  2. 缓存编译脚本以避免重新编译
  3. 重新编译脚本并更新缓存,如果对其进行了任何更改。

将jmeter函数和变量插入脚本中对任何语言都有些危险,因为它可能会解决导致汇编失败甚至更糟的某些内容,从而导致您不会期望的代码。如果是Groovy Jmeter变量语法与Groovy Gstring模板的冲突

因此,每次调用脚本时,将变量汇总会导致开销。

因此,请继续遵循Jmeter的最佳实践,并记住一个小技巧:避免在可能的情况下进行脚本,因为没有脚本选项的性能与Java一样快,请查看beanshell vs jsr223 vs java java jmeter scripting:您一直在等待的性能!指南以获取详细信息。

相关内容

最新更新