Использует ли JMeter пул HTTP-соединений?

Я знаю при использовании встроенного JAVA HTTP-клиента в JMeter HTTP Request соединения sampler могут или не могут быть объединены в пул, в зависимости от реализации и конфигурации JVM.

однако соединения пула JMeter при использовании HttpClient3.1 или HttpClient4?

в документации JMeter есть некоторые намеки, что это может быть, но ничто в документации окончательно не заявляет об этом.

Если это так, есть ли способ, чтобы контролировать пул соединений? Например, вы можете установить размер бассейна?

2 ответов


JMeter выполняет некоторый пул HTTP-соединений при использовании HttpClient3.1 или HttpClient4.

в обоих случаях соединения объединяются в пул для каждого потока. Соединения не являются общими для потоков.

при использовании HttpClient3.1, JMeter использует экземпляр SimpleHttpConnectionManager в каждом потоке.

при использовании HttpClient4 JMeter использует экземпляр подкласса PoolingClientConnectionManager в каждом потоке, и он использует Настройки PoolingClientConnectonManager по умолчанию (2 соединения на маршрут и 20 максимальных соединений).

JMeter не обеспечивает механизм для управления параметрами пулов соединений.

Мне пришлось перейти к исходному коду JMeter, чтобы найти этот ответ. См. следующие ссылки для справки (2.13 с тегами код):

Примечание: этот ответ точен для JMeter 2.13. Ответ может быть различным для других версий JMeter.


обновление для JMeter 3: в вашей конфигурации HTTPSampler вы можете использовать записи

 <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
 <stringProp name="HTTPSampler.concurrentPool">10</stringProp>

чтобы указать размер пула соединений в соответствии с этим фрагментом кода (от http://svn.apache.org/viewvc/jmeter/tags/v3_0/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java?view=markup строка 785ff)

      if(this.testElement.isConcurrentDwn()) {
            try {
                int maxConcurrentDownloads = Integer.parseInt(this.testElement.getConcurrentPool());
                    connManager.setDefaultMaxPerRoute(Math.max(maxConcurrentDownloads, connManager.getDefaultMaxPerRoute()));                
                } catch (NumberFormatException nfe) {
                   // no need to log -> will be done by the sampler
                }
            }
       }

конфигурация через JMeter UI немного причудлива:

переключите представление конфигурации http Sampler на " дополнительно", отметьте "получить все встроенные ресурсы", затем" параллельные загрузки " и введите номер. Вы можете отключить "получить все встроенные ресурсы" после этого, если вы не хотите, чтобы JMeter анализировал ваши ответы на изображения