2016-03-07 7 views
6

Ich weiß, wenn die Verwendung des integrierten Java HTTP-Client in einem JMeterHTTP Request Sampler Verbindungen können oder nicht gepoolt werden, abhängig von der JVM-Implementierung und Konfiguration.Sammelt JMeter HTTP-Verbindungen?

Allerdings Pool-Verbindungen JMeter bei Verwendung von HttpClient3.1 oder HttpClient4?

Es gibt einige Hinweise in der JMeter-Dokumentation, die es möglicherweise gibt, aber nichts in der Dokumentation gibt es definitiv an.

Wenn dies der Fall ist, gibt es eine Möglichkeit, den Verbindungspool zu steuern? Zum Beispiel, können Sie die Größe des Pools festlegen?

Antwort

8

JMeter führt einige Pools von HTTP-Verbindungen durch, wenn HttpClient3.1 oder HttpClient4 verwendet wird.

In beiden Fällen werden die Verbindungen pro Thread zusammengefasst. Verbindungen werden NICHT über Threads gemeinsam genutzt.

Wenn Sie HttpClient3.1 verwenden, verwendet JMeter eine Instanz von SimpleHttpConnectionManager für jeden Thread.

Wenn Sie HttpClient4 verwenden, verwendet JMeter eine Instanz einer Unterklasse von PoolingClientConnectionManager für jeden Thread und verwendet die Standardeinstellungen von PoolingClientConnectonManager (2 Verbindungen pro Route und 20 maximale Verbindungen).

JMeter bietet keinen Mechanismus zum Steuern der Parameter der Verbindungspools.

Ich musste zu JMeter Quellcode gehen, um diese Antwort zu finden. Auch die folgenden Links Referenz (die 2,13 getaggt Code):

Hinweis: diese Antwort für JMeter 2.13 genau ist. Die Antwort kann für andere Versionen von JMeter anders lauten.

+0

ja, muss die httpclient-Implementierung verwenden! Danke vielmals! – hao

1

Update für JMeter 3: in Ihre HTTPSampler Konfiguration Sie die Einträge

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

zum Anschluss Poolgröße nach diesem Kodex-Snippet (von http://svn.apache.org/viewvc/jmeter/tags/v3_0/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java?view=markup Linie 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 
       } 
      } 
     } 

angeben können Die Konfiguration über JMeter UI ist ein bisschen schrullig:

Schalten Sie die HTTP-Sampler-Konfigurationsansicht auf "Erweitert", markieren Sie "Ret alle eingebetteten Ressourcen ", dann" Parallele Downloads "und geben Sie eine Nummer ein. Sie können die Option "Alle eingebetteten Ressourcen abrufen" danach deaktivieren, wenn Sie nicht wollen, dass JMeter Ihre Antworten für Bilder analysiert