在Jmeter中,不管线程数如何,只执行一次示例请求

在Jmeter中,不管线程数如何,只执行一次示例请求,jmeter,performance-testing,database-performance,jmeter-plugins,Jmeter,Performance Testing,Database Performance,Jmeter Plugins,我正在对应用程序数据库进行压力测试。 我已经成功地设置了JDBC连接配置,并且能够执行查询。 要求是: 在数据库的customer_表中插入新客户。客户ID(即列名)应是唯一的,并按顺序排列。例如,在customer_表中,如果已经存在100个客户,则要添加其他客户,客户id应以101开头。 因此,在我的测试计划中,我需要首先使用Select查询获取现有客户的数量,然后执行实际的Insert查询,该查询将进行压力测试。 因此,我在测试计划中添加了以下内容 带有select查询的jdbc请求,用于

我正在对应用程序数据库进行压力测试。 我已经成功地设置了JDBC连接配置,并且能够执行查询。 要求是: 在数据库的customer_表中插入新客户。客户ID(即列名)应是唯一的,并按顺序排列。例如,在customer_表中,如果已经存在100个客户,则要添加其他客户,客户id应以101开头。 因此,在我的测试计划中,我需要首先使用Select查询获取现有客户的数量,然后执行实际的Insert查询,该查询将进行压力测试。 因此,我在测试计划中添加了以下内容

  • 带有select查询的jdbc请求,用于获取现有客户数(在整个测试计划中仅一次),并将客户数保存在变量名中
  • 一个计数器元素,其中start value是来自第一个jdbc请求的变量名,并将其递增1
  • 带有插入查询的实际JDBC请求
  • 这种方法的问题是,我只需要执行第一个请求一次,而不考虑线程数。 我尝试过的替代方法: 我还尝试创建两个线程组,并使用Jmeter属性将客户数量从第一个线程组传递到第二个线程组。但是第二个线程组无法访问我设置为Jmeter属性的第一个线程组的客户计数。 感谢您的帮助。

    将请求置于,并使用以下条件:

    ${__threadNum} == 1
    
    这样JMeter将只对第一个线程执行采样器

    如果在线程组级别使用多个循环,则可能需要修改条件,使其仅在第一个循环中运行,如:

    ${__threadNum} == 1 && ${__groovy(vars.getIteration() == 1,)}
    
    参考资料:


    我现在有另一个问题。我使用的是计数器元素,在计数器元素的起始值中,我想使用在前一个示例的后处理器中创建的jmeter变量。但是计数器以值0开始。