Использует ли 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 анализировал ваши ответы на изображения