JMeter - HashMap / LoopController异常日志

时间:2015-09-09 08:53:07

标签: jmeter

以下错误日志的主要原因是什么?

  

2015/09/09 10:47:42错误 - jmeter.threads.JMeterThread:测试失败!   java.lang.StackOverflowError at   java.util.LinkedHashMap中的$ EntryIterator。(LinkedHashMap.java:412)     at java.util.LinkedHashMap.newEntryIterator(LinkedHashMap.java:419)     在java.util.HashMap $ EntrySet.iterator(HashMap.java:1078)at   java.util.Collections中的$ SynchronizedCollection.iterator(Collections.java:1632)     在   org.apache.jmeter.testelement.AbstractTestElement.recoverRunningVersion(AbstractTestElement.java:499)     在   org.apache.jmeter.control.GenericController.reInitialize(GenericController.java:131)     在   org.apache.jmeter.control.GenericController.nextIsNull(GenericController.java:257)     在   org.apache.jmeter.control.GenericController.next(GenericController.java:175)     在   org.apache.jmeter.control.GenericController.nextIsAController(GenericController.java:229)     在   org.apache.jmeter.control.GenericController.next(GenericController.java:180)     在   org.apache.jmeter.control.GenericController.nextIsAController(GenericController.java:226)     在   org.apache.jmeter.control.GenericController.next(GenericController.java:180)     在   org.apache.jmeter.control.GenericController.nextIsAController(GenericController.java:226)     在   org.apache.jmeter.control.GenericController.next(GenericController.java:180)     在   org.apache.jmeter.control.LoopController.next(LoopController.java:123)     在   org.apache.jmeter.control.LoopController.nextIsNull(LoopController.java:151)

     

{重复下一次~900行}

我的测试计划如下:

Testplan
- Authentication Transaction Controller
- Forever Loop
   - Random Order Controller
     - Simple Controller A
       - Only Once Controller
         - Parameterized Controller
           - Module Controller (to "Simple Controller 1")
       - For Each Loop (loops variables set by "BeanShell Post Processor 1")
         - Module Controller (to "Simple Controller 2")
     - Simple Controller B
     - Simple Controller C
Disabled Thread Group
- Simple Controller 1
   - Transaction Controller
      - HTTP Request
         - BeanShell Post Processor 1 (for JSON Extraction)
- Simple Controller 2
   - Transaction Controller
      - HTTP Request
         - BeanShell Post Processor 2 (for JSON Extraction)

注意:我正在处理很多用户变量。

1 个答案:

答案 0 :(得分:0)

我的期望是问题存在于Beanshell PostProcessors中的某个地方,例如,有一些代码会导致无限循环或其他问题。如果您可以发布响应和Beanshell PostProcessor代码,我可能会更具体。现在我可以推荐以下内容:

  1. 如果提取JSON是他们唯一的职责,请考虑从Beanshell PostProcessors切换到JSONPath Extractor
  2. 如果不是 - 通常不建议使用Beanshell,因为它有一些已知的性能问题,而且它被放弃了> gt; 10年。切换到JSR223 Post Processors和groovy语言。 Groovy比Beanshell更兼容Java,所以如果你没有使用任何特定于Beanshell的东西,你就不必重写一行代码。请参阅Beanshell vs JSR223 vs Java JMeter Scripting: The Performance-Off You've Been Waiting For!了解Beanshell与JSR223基准,groovy脚本引擎的安装说明和脚本最佳实践。