【问题标题】:Jmeter Current Thread Number?Jmeter当前线程号?
【发布时间】:2011-09-21 02:03:07
【问题描述】:

我在 HTTP 请求中使用线程数 = 5 的线程组。

在请求中我想包含一个带有线程号值的参数,例如,

"pageno": ${threadno}

我想得到像${threadno}这样的线程号。

我该怎么做?

【问题讨论】:

    标签: multithreading jmeter


    【解决方案1】:

    线程号可用:

    ${__threadNum}
    

    见:functions reference

    【讨论】:

      【解决方案2】:

      虽然上述${__threadNum} 可以在 jMeter 中的许多地方使用,但您需要在不允许使用的地方使用其他东西,例如 Pre/Post-Processors 中的脚本元素。

      此答案解释了如何在 jMeter 中的此类脚本中获取线程数或计数。

      要获取当前线程的编号(在您的情况下为 5 个),请使用 ctx.getThreadNum(),它将获取线程的编号。

      要获取 jMeter 使用的线程总数,您可以使用 ctx.getThreadGroup().getNumThreads()ctx.getThreadGroup().getNumberOfThreads() 获取活动线程总数。

      https://jmeter.apache.org/api/org/apache/jmeter/threads/JMeterContext.html#getThreadNum() https://jmeter.apache.org/api/org/apache/jmeter/threads/AbstractThreadGroup.html

      【讨论】:

      • 是否有充分的理由不使用记录在案的${__threadNum} 函数?
      • 是的:至少有两个空格:a) jMeter 元素内的 GUI 表单的输入框:${__threadNum} 就足够了,是的。但是 b) 还有脚本区域,主要是 JSR223/groovy:需要编程方法 ctx.getThreadNum()。而不是预先咀嚼的“变量”,以编程方式,一个人有权做几乎任何事情。
      • 在 groovy 中还可以选择使用 GString 来评估函数:log.info("thread(${__threadNum})")
      【解决方案3】:

      对于那些在整个测试计划中寻找活动线程数的人,而不仅仅是特定的线程组。

      ${__groovy(org.apache.jmeter.threads.JMeterContextService.getNumberOfThreads())}
      

      【讨论】:

        【解决方案4】:

        ${__threadNum} 单独工作不好。

        您将需要使用 ${__eval(${__threadNum})}。 尝试使用这个:

        int threadNum=ctx.getThreadGroup().getNumThreads(); 
        

        ctx 来自 JmeterContext

        【讨论】:

        • 为什么需要评估一个数字? __threadNum 作为记录工作得很好。另外,线程数与当前线程数不一样。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-14
        • 2019-04-21
        相关资源
        最近更新 更多