【问题标题】:JMeter HTTP2 request error (Java 8, JMeter 5.1)JMeter HTTP2 请求错误(Java 8、JMeter 5.1)
【发布时间】:2020-03-08 03:00:07
【问题描述】:

我安装了 java 1.8.0_151 和 JMeter 5.1。尝试发送 HTTP2 请求时出现以下错误:

java.util.concurrent.ExecutionException: java.lang.IllegalStateException: No Client ALPNProcessors!
at org.eclipse.jetty.util.FuturePromise.get(FuturePromise.java:138)
at com.blazemeter.jmeter.http2.sampler.HTTP2Connection.connect(HTTP2Connection.java:69)
at com.blazemeter.jmeter.http2.sampler.HTTP2Request.setConnection(HTTP2Request.java:280)
at com.blazemeter.jmeter.http2.sampler.HTTP2Request.sample(HTTP2Request.java:140)
at com.blazemeter.jmeter.http2.sampler.HTTP2Request.sample(HTTP2Request.java:117)
at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:622)
at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:546)
at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:486)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:253)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalStateException: No Client ALPNProcessors!
    at org.eclipse.jetty.alpn.client.ALPNClientConnectionFactory.<init>(ALPNClientConnectionFactory.java:57)
    at org.eclipse.jetty.http2.client.HTTP2Client.lambda$doStart$1(HTTP2Client.java:155)
    at org.eclipse.jetty.http2.client.HTTP2Client$ClientSelectorManager.newConnection(HTTP2Client.java:438)
    at org.eclipse.jetty.io.ManagedSelector.createEndPoint(ManagedSelector.java:222)
    at org.eclipse.jetty.io.ManagedSelector.access$1500(ManagedSelector.java:60)
    at org.eclipse.jetty.io.ManagedSelector$CreateEndPoint.run(ManagedSelector.java:825)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:754)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:672)
    ... 1 more
    Suppressed: java.lang.IllegalStateException: org.eclipse.jetty.alpn.ALPN must be on JVM boot classpath
        at org.eclipse.jetty.alpn.java.client.OpenJDK8ClientALPNProcessor.init(OpenJDK8ClientALPNProcessor.java:43)
        at org.eclipse.jetty.alpn.client.ALPNClientConnectionFactory.<init>(ALPNClientConnectionFactory.java:77)
        ... 8 more

我已将alpn-boot-8.1.11.v20170118.jar(根据我的java 版本)下载到jmeter\lib 文件夹,并将以下记录添加到jmeter.bat:set JVM_ARGS="-Xbootclasspath/p:D:\apache-jmeter-5.1\apache-jmeter-5.1\lib\alpn-boot-8.1.11.v20170118.jar;"。 HTTP2 请求仍然无法正确发送。我错过了什么?提前谢谢你????

【问题讨论】:

    标签: jmeter http2


    【解决方案1】:

    您的步骤看起来不错,我只能想到 HTTP2 采样器不起作用的 2 个原因:

    1. alpn-boot 库的路径错误,您可以使用dir command 进行检查,例如:

      dir d:\apache-jmeter-5.1\apache-jmeter-5.1\lib\alpn-boot-8.1.11.v20170118.jar
      

      你应该看到类似的东西:

    2. 检查 JMeter 使用的 Java 版本,因为它可能不会选择1.8.0_151,而是PATH 中的第一个版本。为了确保 JMeter 使用正确的 Java 运行时,您可以在 jmeter.bat 文件中显式声明它:

      set PATH=d:\java\bin;%PATH%
      
    3. 最后你可以使用JSR223 Sampler来打印Java版本和有效的Java参数,相关代码如下:

      log.info('Java version: ' + System.getProperty('java.version'))
      java.lang.management.ManagementFactory.getRuntimeMXBean().getInputArguments().each {
          log.info("Effective JVM argument: " + "$it")
      }   
      

      如果应用了上述清单项,您应该能够正常执行 HTTP2 请求:


    还要注意,根据9 Easy Solutions for a JMeter Load Test “Out of Memory” Failure,您应该始终使用最新版本的 JMeter,因此请考虑尽快升级到JMeter 5.2(或JMeter Downloads 页面上提供的最新稳定版本)。

    【讨论】:

    • 我已按照您提供的步骤操作,但仍然无法正常工作
    • 第 3 步:出现以下行:'2019-11-12 15:19:58,167 WARN o.e.j.i.ManagedSelector: java.lang.IllegalStateException: No Client ALPNProcessors!'
    【解决方案2】:

    也检查这个线程: HTTP2 request sample crashes with Jmeter4, Java 10 No Client ALPNProcessors 。 它在这里说:特别是,jetty-alpn-openjdk8-client 依赖项无效并且不适合 Java 9+。对于 Java 9+,应使用 jetty-alpn-java-client。

    【讨论】:

    • 感谢您的回答。我使用 Java 8
    • 我记得,去年,当我试图让这个 HTTP2 插件工作时,它不支持低于 9 的 Java 版本,只支持 9 及以上。他们在 HTTP2 中的重定向也有问题
    猜你喜欢
    • 2019-10-19
    • 2020-11-20
    • 2020-02-19
    • 2019-04-09
    • 2021-03-21
    • 1970-01-01
    • 2019-02-05
    • 2023-04-10
    • 1970-01-01
    相关资源
    最近更新 更多