首页 > 解决方案 > 在 JMeter 中使用 Blazemeter HTTP2 采样器时出现 TimeoutException

问题描述

我在 JMeter 中使用 Blazemeter HTTP2 JMeter Sampler 并遇到以下问题。

021-03-07 09:29:03,996 ERROR c.b.j.h.s.HTTP2SampleResult: Error while await for response
java.util.concurrent.TimeoutException: null
    at java.util.concurrent.CompletableFuture.timedGet(CompletableFuture.java:1886) ~[?:?]
    at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2021) ~[?:?]
    at com.blazemeter.jmeter.http2.sampler.HTTP2Connection.awaitResponses(HTTP2Connection.java:171) ~[jmeter-bzm-http2-1.6.1.jar:?]
    at com.blazemeter.jmeter.http2.sampler.HTTP2Request.lambda$waitAllResponses$1(HTTP2Request.java:585) ~[jmeter-bzm-http2-1.6.1.jar:?]
    at java.util.HashMap$Values.forEach(HashMap.java:976) [?:?]
    at com.blazemeter.jmeter.http2.sampler.HTTP2Request.waitAllResponses(HTTP2Request.java:583) [jmeter-bzm-http2-1.6.1.jar:?]
    at com.blazemeter.jmeter.http2.sampler.HTTP2Request.threadFinished(HTTP2Request.java:546) [jmeter-bzm-http2-1.6.1.jar:?]
    at org.apache.jmeter.threads.JMeterThread$ThreadListenerTraverser.addNode(JMeterThread.java:775) [ApacheJMeter_core.jar:5.3]
    at org.apache.jorphan.collections.HashTree.traverseInto(HashTree.java:993) [jorphan.jar:5.3]
    at org.apache.jorphan.collections.HashTree.traverse(HashTree.java:976) [jorphan.jar:5.3]
    at org.apache.jmeter.threads.JMeterThread.threadFinished(JMeterThread.java:742) [ApacheJMeter_core.jar:5.3]
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:328) [ApacheJMeter_core.jar:5.3]
    at java.lang.Thread.run(Thread.java:834) [?:?]

仅当有效负载约为 250kb 并且每 30 秒执行约 120 到 400 个请求时才会发生这种情况。在这种情况下,大约 70% 的请求会失败!更少的请求可以 100% 正常工作。大约 10kb 有效负载的 500 个请求也可以正常工作。是否设置了超时没有区别。

标签: jmeterhttp2jmeter-pluginsjmeter-5.0blazemeter

解决方案


我不认为这是插件或 JMeter 问题,很可能您的服务器超载,因此无法及时提供有效响应。

  1. 检查您的服务器日志
  2. 确保服务器在 CPU、RAM、网络等方面有足够的空间运行。可以使用 ie JMeter PerfMon Plugin来完成
  3. 考虑添加一个加速期并使用 ie Transactions per Second图表关联成功和失败的请求,这可能是您遇到瓶颈的情况,您需要精确识别时间戳和有效负载大小/请求数量导致问题

推荐阅读