HTTP2-запрос не может быть отправлен через JMeter - PullRequest
1 голос
/ 15 октября 2019

Я пытаюсь отправить HTTP2-запросы через JMeter. I use the following request configuration:

Я загрузил файл alpn-boot в соответствии с моей версией java: java версия "1.8.0_151" -> ALPN-версия 8.1.11.v20170118 (согласно https://www.eclipse.org/jetty/documentation/9.4.x/alpn-chapter.html#alpn-versions). Также я добавил путь к файлу alpn-boot в jmeter.bat:

set JVM_ARGS= -Xbootclasspath/p:D:\apache-jmeter-5.1\apache-jmeter-5.1\lib\alpn-boot-8.1.11.v20170118.jar
@echo off

rem   Licensed to the Apache Software Foundation (ASF) under one or more
rem   contributor license agreements.  See the NOTICE file distributed with
...

Но я получаю сообщение об ошибке в JMeter:

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.executeSamplePackage(JMeterThread.java:475)
    at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:418)
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:249)
    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.NoClassDefFoundError: org/eclipse/jetty/alpn/ALPN
        at org.eclipse.jetty.alpn.java.client.OpenJDK8ClientALPNProcessor.init(OpenJDK8ClientALPNProcessor.java:42)
        at org.eclipse.jetty.alpn.client.ALPNClientConnectionFactory.<init>(ALPNClientConnectionFactory.java:77)
        ... 8 more
    Caused by: java.lang.ClassNotFoundException: org.eclipse.jetty.alpn.ALPN
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 10 more

Я предполагаю, что проблема связана с alpn path в файле jmeter.bat, но как это исправить?

1 Ответ

0 голосов
/ 15 октября 2019
  1. Прежде всего, убедитесь, что JMeter использует Java 1.8.0_151 и принимает аргумент -Xbootclasspath, вы можете сделать это, добавив JSR223 Sampler и используя следующее Groovy код:

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

    вы должны получить вывод, как:

    enter image description here

  2. Проверьте, что alpn-boot файл действительно там:

    enter image description here

  3. Санируйте вход, т.е. удалите пробелы, добавьте точку с запятой в конце и заключите значение в кавычки:

    set JVM_ARGS="-Xbootclasspath/p:D:\apache-jmeter-5.1\apache-jmeter-5.1\lib\alpn-boot-8.1.11.v20170118.jar;"
    
  4. Если все пойдет хорошо, вы сможете успешно выполнить запрос HTTP2:

    enter image description here

Дополнительная информация: Новый плагин HTTP / 2 для JMeter

...