wake-up-neo.com

JMeter OutOfMemoryError

Ich habe Probleme mit OutOfMemor und JMeter funktioniert nicht mehr ....

Java.lang.OutOfMemoryError: Java heap space Dumping heap to
    Java_pid4412.hprof ... Heap dump file created [591747609 bytes in
    71.244 secs] Exception in thread "AWT-EventQueue-0" Java.lang.OutOfMemoryError: Java heap space Exception in thread
    "AWT-EventQueue-0" Java.lang.OutOfMemoryError: Java heap space
    Exception in thread "AWT-EventQueue-0" Java.lang.OutOfMemoryError:
    Java heap space Exception in thread "AWT-EventQueue-0"
    Java.lang.OutOfMemoryError: Java heap space

Wie kann es gelöst werden?
Mein System verfügt über sehr gute Spezifikationen wie 16 GB RAM, 2x Quad Core-Prozessoren und 146 GB HDD.

Kann mir jemand helfen?

16
james

Ihr Heap-Dump zeigt, dass Sie die Standard-JMeter-Einstellungen von 512 Mo. Verwenden. Selbst wenn Sie 16 GB haben, verwenden Sie sie nicht.

Ersetzen Sie die standardmäßige JVM optional in jmeter.bat mit der richtigen Größe:

set HEAP=-server -Xms768m -Xmx768m -Xss128k 

set NEW=-XX:NewSize=1024m -XX:MaxNewSize=1024m

Schauen Sie sich auch an:

15
ChamaraS

Wie viel Speicher haben Sie für die JVM reserviert? Irgendwo um 512 MB?

Die Konfiguration ist 

Java -Xms<initial heap size> -Xmx<maximum heap size>
15
Aleksi Yrttiaho

UmOutOfMemoryErrorzu optimieren, sollten diese Schritte befolgt werden:

  • Erhöhen Sie die Java-Heap-Größe:

JMeter ist ein Java-Tool, das mitJVMausgeführt wird. Um die maximale Leistungsfähigkeit zu erhalten, müssen wir während der Ausführung maximal Ressourcen für JMeter bereitstellen. Zuerst müssen wir heap size erhöhen (innerhalb des JMeter-Verzeichnisses bin jmeter.bat/sh).

HEAP=-Xms512m –Xmx512m

Dies bedeutet, dass die standardmäßig zugewiesene Heap-Größe mindestens 512 MB und maximal 512 MB beträgt. Konfigurieren Sie es nach Ihnen Eigene Maschinenkonfiguration . Es sollte auch beachtet werden, dass das Betriebssystem auch etwas Speicher benötigt, sodass nicht alle physischen RAM zugewiesen werden sollten.

  • Tests im Nicht-GUI-Modus ausführen:

JMeter ist JavaGUIAnwendung. Es hat auch die Nicht-GUI-Edition, die sehr ressourcenintensiv ist (CPU/RAM). Wenn wir Jmeter im Nicht-GUI-Modus ausführen, verbraucht es less resource und wir können mehr Thread ausführen.

  • ALLE Listener deaktivieren während des Testlaufs. Sie dienen nur zum Debuggen und verwenden sie, um das gewünschte Skript zu entwerfen.

Listener sollten während Lasttests deaktiviert werden. Wenn diese aktiviert werden, entstehen zusätzliche Kosten, die wertvolle Ressourcen verbrauchen, die für wichtigere Testelemente erforderlich sind.

  • Aktuelle Software verwenden:

Java und JMeter sollten auf dem neuesten Stand gehalten werden.

  • Entscheide, welche Metriken du speichern musst:

Wenn Sie Anfragen und Antwortheader speichern, können Assertionsergebnisse und Antwortdaten viel Speicher verbrauchen! Versuchen Sie daher, diese Werte nicht auf JMeter zu speichern, es sei denn, dies ist absolut notwendig.

  • Tweak JVM:

Die folgenden JVM-Argumente in JMeter-Startskripts können ebenfalls hinzugefügt oder geändert werden:

1. Hinzufügen der Speicherzuweisungsrate:

NEW=-XX:NewSize=128m -XX:MaxNewSize=512m

Dies bedeutet, dass der Speicher mit dieser Geschwindigkeit erhöht wird.

2. -server - Damit wird die JVM mit Optimierung der Laufzeitparameter in den "Server" -Modus versetzt. In diesem Modus startet JMeter langsamer, der Gesamtdurchsatz ist jedoch höher.

3. -d64 - Bei Verwendung eines 64-Bit-Betriebssystems kann die Verwendung dieses Parameters die JVM explizit anweisen, im 64-Bit-Modus zu arbeiten.

4. -XX:+UseConcMarkSweepGC - Dies erzwingt die Verwendung des CMS-Garbage-Collectors. Dies verringert den Gesamtdurchsatz, führt jedoch zu viel kürzeren CPU-intensiven Speicherbereinigungen.

5. -XX:+DisableExplicitGC - Dies verhindert, dass Anwendungen teure Speicherbereinigungen erzwingen, und hilft, unerwartete Pausen zu vermeiden.

Für ein besseres und ausgefeilteres Verständnis ist dieser Blog über 9 einfache Lösungen für einen JMeter-Auslastungstest "Nicht genügend Speicher" hilfreich.

8
Adnan

Ich hatte auch dieses Problem und es spielte keine Rolle, wie sehr ich die Konfiguration Java -Xms<initial heap size> -Xmx<maximum heap size> angepasst habe, da mir der Speicher immer knapp wurde. Am Ende fand ich heraus, dass das Ausführen von JMeter im GUI-Modus (insbesondere bei Zuhörern) einen Engpass verursacht. Die beste Methode für die Verwendung von JMeter, insbesondere für erweiterte Tests oder das Ausführen mehrerer Slave-Server, ist der Nicht-GUI-Modus. Dieser sieht etwa so aus:

jmeter -n -t testplan.jmx -r

Schauen Sie sich diesen Link an und lesen Sie, wie Sie den Remote-Test richtig durchführen: http://wiki.Apache.org/jmeter/JMeterFAQ#How_to_do_remote_testing_the_.27proper_way.27.3F . Lesen Sie den Abschnitt über den Remote-Test auf die richtige Art und Weise.

Hoffe das hilft.

5
user1714830

Sie sollten prüfen, ob Sie während Ihrer Tests mit vielen Benutzern einen Strukturergebnislistener verwenden.

Überprüfen Sie die bewährten Methoden von Jmeter, um derartige Probleme zu vermeiden.

Grüße

4
user1565007

Sie müssen HEAP SIZE in der Datei jmeter.bat ändern. Zuerst müssen Sie die Größe von 2 GB oder 6 GB (ODER die Größe, die Sie einfügen möchten) in MB konvertieren, diese dann speichern und die .bat-Datei erneut starten.

Setze Wert für "set HEAP = - Xms512m -Xmx512m

2
Sohil Shivani

In Jmeter Version 3.x wird es in $ JMETER_HOME/bin/jemter.sh (jmeter.bat) erwähnt:

## Umgebungsvariablen:
## JVM_ARGS - optionale Java-Argumente, z. -Dprop = Wert
## z.B.
## JVM_ARGS = "- Xms512m -Xmx512m" jmeter.sh usw.

in Ihrem Fall können Sie es beispielsweise so einstellen, dass es Ihren Bedürfnissen entspricht.

JVM_ARGS="-Xms1024m -Xmx1024m"
2
Kayvan Tehrani

Führen Sie Jmeter im Nicht-GUI-Modus aus. Erhöhen Sie den Heapspeicher des Speichers. Fügen Sie sehr wenige/keine Listener hinzu. Um Jmeter im Nicht-GUI-Modus auszuführen, wechseln Sie in das bin-Verzeichnis und öffnen Sie die Eingabeaufforderung in diesem Fenster. Verwenden Sie den folgenden Befehl "jmeter.bat -n -t Test.jmx -l Test.csv". Hier ist Test.jmx die Testdatei, die ich im Nicht-GUI-Modus öffnen muss, und Test.csv ist die Datei, in der ich meine benötige gespeicherte Ergebnisse. Um den Speicher zu vergrößern, verwenden Sie den Befehl HEAP = "- Xms512m -Xmx2048m". Hier ist 512 der bereits zugewiesene Speicher und 2048 der Speicher, den ich für die Zuordnung zu Jmeter benötige.

Hoffe das hilft

2
Nauman Malik

Ihr Server verfügt zwar über 16 GB RAM, die Standardgröße des JMeter-Heapspeichers von 512 MB. Erhöhen Sie die Heap-Größe, indem Sie die folgenden Schritte ausführen

1. Open jmeter file using vi editor /text editor
2. Search for "HEAP"
3. Change minimum (-Xms) and Maximum (-Xmx) heap values as you required
4. Save and quit (!wq enter)  
5. Start Jmeter by sh jmeter.sh or bash jmeter.bat or Java -jar ApacheJMeter.jar
2
Madhu Cheepati

Passen Sie die Heap-Größe wie in den anderen Antworten an, und berücksichtigen Sie einige bewährte Vorgehensweisen

  • Wenn Sie einen Test ausführen (natürlich nicht bei der Validierung), verwenden Sie den Nicht-GUI-Modus
  • Deaktivieren Sie alle wichtigen Listener, wie z. B. Ergebnisstruktur anzeigen, verwenden Sie stattdessen einen einfachen Datenschreiber, und analysieren Sie anschließend Ihre Daten

Diese beiden Elemente werden Ihre Leistung und die Heap-Größe bereits erheblich verbessern

0
Dirk R.