2015-02-24 10 views
6

Ich verwende Jmeter, um Workload in eine Anwendung zu implementieren, die auf einer AWS EC2-Instanz bereitgestellt wird. Der Test muss sehr groß sein: Er dauert 10 Stunden und das Workload-Profil hat bimodale Formen mit einer Tonhöhe von etwa 2600 Anfragen in 5 Minuten. Tatsächlich habe ich eine 3. große Instanz, in der die Anwendung bereitgestellt wird, und 8 M3.xlarge Instanzen, die jeweils eine Jmeter-Instanz ausführen. Bei einem Python-Skript wird die zu injizierende Arbeitslast auf die 8 Client-Instanzen aufgeteilt. Wenn also zum Beispiel die ursprüngliche Arbeitslast 800 Requests injiziert, injiziert jede jmeter-Instanz 100 Requests. Der vollständige Test wie gesagt dauert 10 Stunden und ist in Zeitschritte von jeweils 5 Minuten unterteilt. Alle 5 Minuten wird eine kleine Arbeitslastvariation angewendet. Tatsächlich bekomme ich von jeder jmeter Instanz den java.lang.OutOfMemoryError: GC Overhead Grenzwert überschritten Fehler sofort nachdem der Test gestartet wurde und keine Anfrage in der Anwendung eintraf. Ich las viel online und auf Stackoverflow, und ich schloss die möglichen Fehler sein könnten:Jmeter java.lang.OutOfMemoryError: GC-Overhead-Grenzwert überschritten

  • JMV Heap-Größe zu niedrig-> ich folgendes in den jmeter.bat Dateien in jeder jmeter Instanz ausgewertete Einstellung:

    HEAP

    set = -Xms4g -Xmx4g

    Set NEW = -XX: NewSize = 4g -XX: MaxNewSize = 4g

  • einige Fehler in dem Code, der in einer unuseful Nutzung des Garbage Collector weiter führt. Also entferne ich alle jmeter Listener von meinem Test. Insbesondere habe ich TableVisualizer, ViewResultsFullVisualizer, StatVisualizer und GraphVisualizer verwendet.

Das Problem besteht jedoch weiterhin. Ich habe wirklich keine Ahnung, wie ich es lösen kann. Ich weiß, 10 Stunden Test mit 2600 Tonhöhe Anfrage könnte ein sehr schwerer Test sein, aber ich denke, es sollte eine Möglichkeit sein, dies durchzuführen. Ich benutze EC2 m3.xlarge -Instanz, so dass ich sogar die Heap-Größe auf 8G erhöhen könnte, wenn es nützlich sein könnte, oder die Arbeitslast unter noch mehr Clients aufteilen, da ich Spot-Instanzen verwende, also werde ich nicht so viel mehr bezahlen Da ich bereits die Anzahl der Clientinstanzen von 4 auf 8 verdoppelt habe, um das Problem zu lösen, und nicht funktioniert, bin ich ein wenig verwirrt und möchte Ratschläge einholen, bevor ich immer mehr Ressourcen bekomme. Vielen Dank im Voraus.

+0

Ja, JMeter ist eine notorische Ressource Gobbler. Schließen Sie definitiv alle Komponenten ab, die während der Testsitzung Daten sammeln. Gib ihm den ganzen Haufen, den du kannst. –

+0

Es ist korrekt, den Parameter HEAP und NEW in jmeter.bat auf 2/4/8g zu ändern? –

+0

Die 'NEW' Parameter sehen wie das Falsche aus.Wenn Sie OOME erhalten, bedeutet das, dass viele * alte * Objekte beibehalten werden, und diese 'NEW'-Parameter zwingen die JVM, alles als neue Objekte zu behandeln. Dies bedeutet, dass Minor GCs sehr langsam sind. Es ist normalerweise die beste Option, die JVM dynamisch zu dimensionieren. –

Antwort

5

Ihre Heap-Einstellungen falsch aussehen: Satz HEAP = -Xms4g -Xmx4g gesetzt NEW = -XX: NewSize = 4g -XX: MaxNewSize = 4g

Ihre neue Heap Größe gleich ist, das ist falsch. Kommentar NEUER Teil zuerst.

Können Sie eine ps-epf | grep Java und zeigen Sie die Ausgabe?

Und auch überprüfen Sie die folgenden Empfehlungen beachten:

schließlich einen Überblick über Ihren Testplan zeigen und Anzahl der Threads, die Sie starten.

Verwandte Themen