2014-02-08 4 views
5

Ich teste meine Website mit HTTPS. Die Antwortzeit ist höher, wenn ich die Standardimplementierung verwendet habe. Die Antwortzeit wird reduziert, wenn ich die Implementierung als HTTPclient 3.1 verwende. Warum gibt es einen Unterschied in der Antwortzeit zwischen HTTPclient 4 und HTTPclient 3.1? Um meine Website mit https zu testen, muss ich HTTPclient 4 oder HTTPclient 3.1 verwenden? Welches liefert mir die genaue Antwortzeit wie im Browser?Unterschied in der Antwortzeit zwischen HTTPclient 3.1 und HTTP-Client 4 in Jmeter

Im Folgenden meine Probe Testplan ist,

enter image description here

Antwort

8

Per HTTP Request documentation

HTTP Request - dies hat eine Implementierung Dropdown-Box, die das HTTP-Protokoll-Implementierung wählt verwendet werden soll : Java - verwendet die von der JVM bereitgestellte HTTP-Implementierung. Dies hat einige Einschränkungen im Vergleich zu den HttpClient-Implementierungen - siehe unten. HTTPClient3.1 - verwendet Apache Commons HttpClient 3.1. Dies wird nicht mehr weiterentwickelt, und die Unterstützung dafür kann in einer zukünftigen JMeter-Version entfallen. HTTPClient4 - verwendet Apache HttpComponents HttpClient 4.x. Leerwert - setzt die Implementierung nicht auf HTTP-Samplers, sondern auf HTTP-Request-Defaults, sofern vorhanden oder auf jmeter.httpsam- per-Eigenschaft in jmeter.properties definiert Die Java-HTTP-Implementierung unterliegt einigen Einschränkungen: Es gibt keine Kontrolle darüber, wie Verbindungen wiederhergestellt werden. benutzt. Wenn eine Verbindung von JMeter freigegeben wird, wird sie möglicherweise von demselben Thread wiederverwendet. Die API eignet sich am besten für Singlethread-Verwendung - verschiedene Einstellungen werden über Systemeigenschaften definiert und gelten daher für alle Verbindungen. Es gibt einen Fehler in der Behandlung von HTTPS über einen Proxy (CONNECT wird nicht korrekt behandelt). Siehe Java-Fehler 6226610 und 6208335. Es unterstützt keine virtuellen Hosts.

Es ist besser HTTPClient4 Implementierung zu verwenden.

Allerdings, wenn Sie benötigen, um Ihre Anfragen so viel wie ein echter Browser wie möglich Sie folgende Komponenten berücksichtigen müssen sein:

  • In HTTP Request Default s tell JMeter alle eingebetteten Ressourcen abzurufen und tun sich mit der Thread-Pool von 2-5 Anfragen (als echte Browser)
  • Verwenden HTTP Cookie Manager - Browser-Cookies zu simulieren und mit Cookie-basierten Authentifizierung
  • Verwendung HTTP Header Manager beschäftigen - User-Agenten-String, Inhaltstyp zu setzen, Zube PT Sprache usw. Header.
  • Verwenden HTTP Cache Manager - Browser-Cache
+0

Hallo dmitri .. Ich benutze bereits alle Elemente, die Sie erwähnt haben, um wie ein Browser zu handeln. Mein Anwendungsfall ist, meine Website zwischen http und https zu vergleichen. Aber meine wirkliche Sorge ist, dass, wenn ich HTTPclient 3.1 verwende, die Antwortzeit näher an der Antwortzeit von http ist. Wenn ich HTTPclient 4 verwende, ist die Antwortzeit fünf mal die Antwort von http. Wie Sie bereits erwähnt haben, wird es in Zukunft keinen HTTP-Client 3.1 mehr geben. Warum gibt es einen großen Unterschied in der Antwortzeit zwischen HTTPclient 3.1 und HTTPclient 4? – Praju

+0

Es sieht so aus, als ob das Problem als https://issues.apache.org/jira/browse/HTTPCLIENT-925 verfolgt wird. Ich habe Implementierungen von HttpClient 3 und 4 lokal gegen SSL-fähigen Apache-Server getestet und die Antwortzeiten sind fast gleich. Ich würde vorschlagen, die Zeit von einem echten Browser zu messen und die nächste Implementierung zu wählen. Persönlich würde ich für HttpClient 4 gehen, aber Sie sind in Ordnung, HTTPClient 3.1 zu verwenden - niemand wird vorherige JMeter-Versionen aus dem Download-Bereich entfernen und HTTPClient 3.1 ist immer noch in der neuesten JMeter 2.11 –

+0

Vielen Dank dmitri für Ihre wertvolle Erklärung. – Praju

2

Benchmarks Ich habe gegen lokalen Standort in HTTPs zu simulieren überhaupt nicht bestätigen, was hier gesagt wird.

HttpClient 4 ist sogar jetzt schneller als HttpClient 3.1, besonders seit 2.10, die ein Problem in diesem Bereich festgelegt:

Und mehr noch mit 2,11, die Leistungsverbesserungen vorgenommen:

Auch wie Sie sehen können, wird das Problem von Dmitri als "Kein Problem" geschlossen, da das berichtete Problem falsch war.

Wenn Sie bestätigen, dass Sie sich nicht in den in der JIRA beschriebenen Fällen befinden, kann es hilfreich sein, zu beschreiben, wie Sie Ihren Test leiten.

+0

Hallo Ubik, ich hatte Probleme in 2.9, also habe ich mit 2.11 versucht. Trotzdem habe ich das gleiche Problem. Mein Testplan enthält wenige Anfragen (HTTPS) und ich enthielt einen Cookie-Manager, eine gleichzeitige Poolgröße von 4. Mit HTTPclient 4 bekam ich eine Antwortzeit, die viel höher war als bei httpclient3.1. Ich ändere keine SSL-Konfigurationen in jmeter.property oder system.property. Mein Server hat auch eine höhere Spezifikation. Können Sie mir die Lösung vorschlagen, um die genaue Reaktionszeit zu erhalten? Muss ich eine SSL-Konfiguration in der Eigenschaftendatei ändern? – Praju

+0

Können Sie Ihren Testplan zeigen? –

+0

Testplan in meiner Frage hinzugefügt – Praju