2016-07-13 17 views
2

Ich mache einen Belastungstest mit Jmeter 3.0. Die grafische Darstellung Response Codes pro Sekunde zeigt mir ein Sägezahn-Bild wie folgt aus (50 Threads):Jmeter req/s Rate Verschlechterung, Geladen org.mozilla.javascript.gen._cmd__

enter image description here tryed zu überwachen Java mit VisualVM und eine grafische Darstellung der geladenen Klassen und gc mit früheren korrelieren: enter image description here enter image description here

So scheint es wie rps wächst nur nach Full GC und die Tropfen nach unten.

Ich habe Jmeter mit key -verbose: class> classes.txt neu gestartet, um zu sehen, welche Art von Klassen geladen werden. Diese Datei war meist voll mit Tausenden von Einheiten wie diese:

[Loaded org.mozilla.javascript.gen._cmd__128239 from file:/C:/apache-jmeter-3.0/lib/rhino-1.7.7.1.jar] 
[Loaded org.mozilla.javascript.gen._cmd__128259 from file:/C:/apache-jmeter-3.0/lib/rhino-1.7.7.1.jar] 
[Loaded org.mozilla.javascript.gen._cmd__128262 from file:/C:/apache-jmeter-3.0/lib/rhino-1.7.7.1.jar] 
[Loaded org.mozilla.javascript.gen._cmd__128261 from file:/C:/apache-jmeter-3.0/lib/rhino-1.7.7.1.jar] 
[Loaded org.mozilla.javascript.gen._cmd__128263 from file:/C:/apache-jmeter-3.0/lib/rhino-1.7.7.1.jar] 
[Loaded org.mozilla.javascript.gen._cmd__128265 from file:/C:/apache-jmeter-3.0/lib/rhino-1.7.7.1.jar] 
[Loaded org.mozilla.javascript.gen._cmd__128266 from file:/C:/apache-jmeter-3.0/lib/rhino-1.7.7.1.jar] 
[Loaded org.mozilla.javascript.gen._cmd__128269 from file:/C:/apache-jmeter-3.0/lib/rhino-1.7.7.1.jar] 
[Loaded org.mozilla.javascript.gen._cmd__128271 from file:/C:/apache-jmeter-3.0/lib/rhino-1.7.7.1.jar] 
[Loaded org.mozilla.javascript.gen._cmd__128270 from file:/C:/apache-jmeter-3.0/lib/rhino-1.7.7.1.jar] 
[Loaded org.mozilla.javascript.gen._cmd__128257 from file:/C:/apache-jmeter-3.0/lib/rhino-1.7.7.1.jar] 
[Loaded org.mozilla.javascript.gen._cmd__128260 from file:/C:/apache-jmeter-3.0/lib/rhino-1.7.7.1.jar] 
[Loaded org.mozilla.javascript.gen._cmd__128273 from file:/C:/apache-jmeter-3.0/lib/rhino-1.7.7.1.jar] 
[Loaded org.mozilla.javascript.gen._cmd__128267 from file:/C:/apache-jmeter-3.0/lib/rhino-1.7.7.1.jar] 
[Loaded org.mozilla.javascript.gen._cmd__128268 from file:/C:/apache-jmeter-3.0/lib/rhino-1.7.7.1.jar] 
[Loaded org.mozilla.javascript.gen._cmd__128280 from file:/C:/apache-jmeter-3.0/lib/rhino-1.7.7.1.jar] 
[Loaded org.mozilla.javascript.gen._cmd__128275 from file:/C:/apache-jmeter-3.0/lib/rhino-1.7.7.1.jar] 
[Loaded org.mozilla.javascript.gen._cmd__128277 from file:/C:/apache-jmeter-3.0/lib/rhino-1.7.7.1.jar] 
[Loaded org.mozilla.javascript.gen._cmd__128272 from file:/C:/apache-jmeter-3.0/lib/rhino-1.7.7.1.jar] 

Nur eine Sache, die eine gleichmäßige Belastung zu halten hilft, ist Heap-Größe zu verringern oder eine Anzahl von Threads erhöhen (häufige gc zu zwingen). Versucht, verschiedene Java-Einstellungen und die letzte war:

java -server -XX:+HeapDumpOnOutOfMemoryError -Xms2g -Xmx2g -XX:NewSize=128m -XX:MaxNewSize=512m -XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=50 -XX:MaxTenuringThreshold=2 -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC -XX:+DisableExplicitGC -verbose:class > classes.txt -jar ApacheJMeter.jar 
+0

nette Analyse! Was ist Ihr JMeter-Skript, das diesen Datenverkehr antreibt? Etwas wird gelöscht und ziemlich neu erstellt. – diginoise

+0

JS-Aufrufe schlagen einen JS-Code im Skript vor. Haben Sie Pre/Post-Prozessoren, If-Controller usw., die JS verwenden können? –

+0

@KirilS. ja, mache ich. eine Menge von If-Controllern und Pre/Post-Beanshell-Postprozessoren – v0devil

Antwort

0

Ihre Antwort hat bereits den Grund und die Lösung, nur zusammenzufassen.

Referenzen: 1. Apache JMeter Best Practices 2. 9 Easy Solutions for a JMeter Load Test “Out of Memory” Failure

+0

Ich benutze gleichzeitige Markensuchlauf gc. Über JSR223 habe ich eine andere Frage vor http://stackoverflow.com/questions/38219321/jmeter-3-0-jsr223groovy-vs-beanshell – v0devil

+0

erstellt. Es ist nicht die GC-Einstellungen oder der Speicher verfügbar. Es ist dein dritter Punkt, das Skript folgt nicht der Best Practice. v0devil, Sie müssen Ihr Skript so ändern, dass nur noch die Ladeoperation ausgeführt wird und nur die Regex verwendet wird, um maximal Werte zu ziehen. –