【问题标题】:Jmeter - Break down huge JDBC query into multiple JDBC queriesJmeter - 将庞大的 JDBC 查询分解为多个 JDBC 查询
【发布时间】:2020-06-16 15:19:07
【问题描述】:

我想执行返回 700K+ 行的 jdbc 查询,然后基于此构建我的逻辑,但是当尝试执行响应时间太长时,我需要分解多个查询,每个查询都返回 ex:1000 结果。

我的架构是这样的:

  1. 001_1 JDBC max_value - 定义 700K 的最大值,该最大值一直在增加。

  2. 001_1 JDBC MAIN - 我想将此 JDBC 分解为多个 JDBC 请求。

  3. InIt 计数器 = vars.put("counter","1");

  4. offset_value - 计数器元素

  1. 当控制器 - ${__javaScript(parseInt(vars.get("counter"))<=700)}

如果我将硬编码值放入 While 控制器,一切正常,并且我的脚本正在运行;但是当数据库增加记录大小时,我需要手动修改while控制器700的数量,这样才能覆盖下一条记录。

根据我的理解,我有 3 个变量:

max_value = 714K
counter = 1
offset_value = 0

如果我尝试:${__javaScript(parseInt(vars.get("offset_value")<=parseInt(vars.get("max_value")))== true)}

作为 while 控制器语句,offset_value 仍未计算,并且 while 控制器无法正常工作。

我如何比较 offset_valuemax_value,以便我可以驱动我的 While 控制器?

感谢任何帮助!

【问题讨论】:

    标签: jmeter


    【解决方案1】:

    如果您的parseInt(vars.get("offset_value")) 表达式正在针对未初始化的变量执行,它将返回NaN,因此将其与数字进行比较没有多大意义,您需要将其修改为parseInt(vars.get("offset_value")) || 0 之类的东西它会在第一次迭代时返回零。

    还要注意 starting from JMeter 3.1 you should be using JSR223 Test Elements for scripting 和相应的 __groovy() function 在 While 控制器中。更多信息:Apache Groovy - Why and How You Should Use It

    【讨论】:

      【解决方案2】:

      感谢@Dmitri T 的帮助;但是对我来说解决方案是:

      1. Initialize the compare value as: JRS233 sample -> vars.put("offset_value","0");
      2. ${__javaScript(parseInt(vars.get("offset_value"))<=parseInt(vars.get("max_value_1")),)}   -> inside while controller.
      3. Counter: Track counter & Reset counter: must me checked both
      

      【讨论】:

        猜你喜欢
        • 2015-04-17
        • 1970-01-01
        • 2019-01-11
        • 2020-04-26
        • 2021-12-17
        • 2021-12-12
        • 1970-01-01
        • 2016-01-25
        • 1970-01-01
        相关资源
        最近更新 更多