【问题标题】:some Jmeter property substitution (${__P(...)}) not working in remote test一些 Jmeter 属性替换 (${__P(...)}) 在远程测试中不起作用
【发布时间】:2017-12-11 15:51:57
【问题描述】:

更新:我附上了测试脚本。 CSV-DATASOURCE(文件名)和主线程组(线程数)中的两个替换不被接受:test plan file

这开始让我们发疯了。使用 Jmeter 3.3 r1808647。属性替换似乎完全失败了,但只有在远程运行测试时。

我尝试了很多不同的方法,最新的看起来是这样的:

  1. 在setUp 线程组中,我使用Config 元素/用户定义变量定义了一些用户变量。文字值有效,但 ${__P(globalPropName)} 在本地测试中被正确替换,并且在远程测试中仍然是字符串 ${__P(globalPropName)}。这在使用调试采样器时很明显。
  2. 但在同一个调试采样器的结果中,该属性存在且具有有效值,因此不是 -J/-G 问题。
  3. 由于变量替换不起作用,我也不能使用默认值。

我尝试在某些项目中直接使用替换,例如线程数,但由于没有替换,整个事情都不起作用。

有趣的是,像 ${varname} 这样的简单变量替换是有效的。任何更高级的东西都没有。就好像在远程运行中,字符串解析器被故意降低了。

有什么办法解决这个问题吗?

【问题讨论】:

  • 你能用属性显示调试采样器的结果吗?你 jmx 可以使用以前的版本吗?
  • 我们没有使用 Jmeter 3.2 的选项,所以我们只能使用 3.3。调试采样器在 JMeterProperties 下显示正确的条目:

标签: properties jmeter substitution beanshell


【解决方案1】:

所以看起来远程服务器的启动方式有错误。

批处理文件(我们在这里说的是 Windows)是这样的

"C:\apache-jmeter-3.3\bin\jmeter.bat" -s -Dserver_port=1098 -j "C:\ows\jmeter-service-ows.log" -d "C:\ows"

...因为所有杂项文件(源 CSV、结果文件、日志)都应位于 C:\ows 中。但事实证明,Jmeter 对它的库感到困惑。

当批处理文件看起来像这样时:

"C:\apache-jmeter-3.3\bin\jmeter.bat" -s -Dserver_port=1098 -j "C:\ows\jmeter-service-ows.log" -d "C:\apache-jmeter-3.3"

...测试运行良好,所有替换都正常工作。

我检查了有关 Jmeter 无法在 CompoundVariable 类中找到任何函数的日志和警告,在第一种情况下他们没有找到,在第二种情况下他们全部找到。

我实际上怀疑存在错误,因为此测试使用了一个额外的外部库 (gson),它与丢失的罪魁祸首(jmeter.functions 或类似的 stg)位于同一文件夹中,并且 那个 在这两种情况下都可以正常加载特定的库。你怎么看,我应该报告这个错误吗?

【讨论】:

    【解决方案2】:
    1. 确保您通过 -G command-line argument 从主服务器传递您的 globalPropName 属性,例如:

      jmeter -GglobalPropName=foo
      
    2. 确保您将远程从站配置为写入日志文件,例如:

      jmeter -s -j slave.log
      
    3. 确保在从机上安装 JMeter 的“lib/ext”文件夹下有ApacheJMeter_functions.jar。如果您的测试在本地运行良好,我建议您将“工作”JMeter 实例通过网络复制到从属主机。

    我可以声明我无法使用相同的 JMeter 版本重现您的问题,请尝试下面列出的相同测试计划和命令,如果可行 - 请相应地修改您的设置

    参考资料:

    【讨论】:

    • 1-2-3 已经是这样了(还有一些命令行开关,但基本上我正在按照您的建议进行操作。仍然没有运气。事情是,这些是 Windows 7 企业机器,其中一台机器是master,另外8台机器是slave。所有slave都使用基于nssm的jmeter服务在1098端口运行slave服务器(1099端口是为3.2实例保留的,仍在其他项目中使用)。服务的主目录是 c:\ows,日志和源文件(如它所指的 .csv)所在的位置。所以深不可测的是......(续 d)
    • ...当我进行独立测试时——效果非常好——我在其中一台从属机器上运行相同的 jmeter 3.3 实例,只是不是远程的,而是在 GUI 模式下。测试运行完美。唯一的区别是,对于从属服务器,整个事情都包装在 nssm 中作为服务。但它是相同的安装。同一个例子。和简单的替换(如 CSV 文件中的值作为 post 参数)工作。只有道具不可用。
    猜你喜欢
    • 2021-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-09
    • 1970-01-01
    • 2012-07-14
    • 2021-12-03
    • 2019-05-21
    相关资源
    最近更新 更多