我知道在JMeter HTTP Request
采样器中使用内置Java HTTP客户端时,可能会也可能不会合并连接,具体取决于JVM的实现和配置。
但是,使用HttpClient3.1或HttpClient4时,JMeter池连接是否?
JMeter文档中可能有一些提示,但文档中没有任何明确说明。
如果是,有没有办法控制连接池?例如,您可以设置池的大小吗?
答案 0 :(得分:9)
使用HttpClient3.1或HttpClient4时,JMeter会对HTTP连接进行一些汇总。
在这两种情况下,每个线程都会连接连接。连接不是跨线程共享的。
使用HttpClient3.1时,JMeter在每个线程上使用SimpleHttpConnectionManager的实例。
使用HttpClient4时,JMeter在每个线程上使用PoolingClientConnectionManager的子类实例,并使用PoolingClientConnectonManager的默认设置(每个路由2个连接,最多20个连接)。
JMeter不提供控制连接池参数的机制。
我不得不去JMeter的源代码找到这个答案。请参阅以下链接以供参考(2.13标记代码):
注意:这个答案对于JMeter 2.13是准确的。对于其他版本的JMeter,答案可能有所不同。
答案 1 :(得分:1)
JMeter 3的更新:在您的HTTPSampler配置中,您可以使用条目
<boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
<stringProp name="HTTPSampler.concurrentPool">10</stringProp>
根据此Code-Snippet指定连接池大小(来自http://svn.apache.org/viewvc/jmeter/tags/v3_0/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java?view=markup第785行)
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采样器配置视图切换为&#34;高级&#34;,勾选&#34;检索所有嵌入式资源&#34;,然后&#34;并行下载&#34;并输入一个数字。您可以取消选中&#34;检索所有嵌入的资源&#34;之后,如果您不希望JMeter解析您对图像的响应