繁体   English   中英

JMeter HTTP2 请求错误(Java 8、JMeter 5.1)

[英]JMeter HTTP2 request error (Java 8, JMeter 5.1)

我安装了 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

I have downloaded alpn-boot-8.1.11.v20170118.jar (according to my java version) to jmeter\lib folder and added the following record to 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 请求仍然无法正确发送。 我错过了什么? 先感谢您

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

  1. alpn-boot库的路径错误,您可以使用dir命令检查它,例如:

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

    你应该看到类似的东西:

    在此处输入图像描述

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

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

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

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

    在此处输入图像描述


Also be aware that according to 9 Easy Solutions for a JMeter Load Test “Out of Memory” Failure you should always be using the latest version of JMeter so consider upgrading to JMeter 5.2 (or whatever is the latest stable version available at JMeter Downloads page)尽早。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM