22

OutOfMemor エラーの下に直面しており、JMeter が動作を停止しています....

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

どうすれば解決できますか?
私のシステムは、16GB RAM、2x クアッド コア プロセッサ、146 GB HDD など、非常に優れた仕様を備えています。

誰でも私を助けることができますか?

4

11 に答える 11

18

ヒープ ダンプは、512 Mo のデフォルトの JMeter 設定を使用していることを示しています。

jmeter.bat のデフォルトの JVM オプションを適切なサイズに置き換えます。

set HEAP=-server -Xms768m -Xmx768m -Xss128k 

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

また見てください:

于 2012-11-23T06:57:01.253 に答える
17

JVMにどのくらいのメモリを割り当てましたか?512 MBのどこか?

構成は

java -Xms<initial heap size> -Xmx<maximum heap size>
于 2010-02-18T06:39:59.143 に答える
15

これらの手順を最適化するOutOfMemoryErrorには、次の手順に従う必要があります。

  • Java ヒープ サイズを増やします。

JMeter は、JVMで実行される Java ツールです。最大の機能を得るには、実行中に JMeter に最大のリソースを提供する必要があります。まず、ヒープ サイズを増やす必要があります(JMeter の bin ディレクトリ内で を取得しますjmeter.bat/sh)。

HEAP=-Xms512m –Xmx512m

これは、デフォルトで割り当てられたヒープ サイズが最小 512MB、最大 512MB であることを意味します。自分のマシン構成に従って構成します。また、OS もある程度のメモリを必要とするため、物理 RAM のすべてを割り当てる必要はありません。

  • 非 GUI モードでテストを実行します。

JMeter は Java GUIアプリケーションです。また、非常にリソース (CPU/RAM) を消費する非 GUI 版もあります。非 GUI モードで Jmeter を実行すると、消費するリソースが少なくなり、より多くのスレッドを実行できます。

  • テスト実行中はすべてのリスナーを無効にします。これらはデバッグ専用であり、目的のスクリプトを設計するために使用します。

負荷テスト中はリスナーを無効にする必要があります。それらを有効にすると、追加のオーバーヘッドが発生し、テストのより重要な要素に必要な貴重なリソースが消費されます。

  • 最新のソフトウェアを使用する:

Java と JMeter は最新の状態に保つ必要があります。

  • 保存する必要があるメトリックを決定します。

リクエストとレスポンス ヘッダーの保存に関しては、アサーションの結果とレスポンス データが大量のメモリを消費する可能性があります。したがって、どうしても必要な場合を除き、これらの値を JMeter に保存しないようにしてください。

  • JVM を微調整します。

JMeter 起動スクリプトの次の JVM 引数も追加または変更できます。

1. メモリ割り当て率を追加します。

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

これは、メモリがこの速度で増加することを意味します。

2.-server - これにより、JVM が「サーバー」モードに切り替わり、ランタイム パラメータが最適化されます。このモードでは、JMeter の起動が遅くなりますが、全体的なスループットは高くなります。

3. -d64 - 64 ビット OS を使用している場合、このパラメーターを使用すると、JVM を 64 ビット モードで実行するように明示的に指定できます。

4. -XX:+UseConcMarkSweepGC - これにより、CMS ガベージ コレクタの使用が強制されます。全体的なスループットは低下しますが、CPU を集中的に使用するガベージ コレクションが大幅に短縮されます。

5. -XX:+DisableExplicitGC - これにより、アプリケーションが高価なガベージ コレクションを強制するのを防ぎ、予期しない一時停止を回避するのに役立ちます。

よりよく、より詳細に理解するには、JMeter 負荷テストの「メモリ不足」の失敗に対する 9 つの簡単な解決策に関するこのブログが役立ちます。

于 2016-07-23T16:01:12.467 に答える
6

これらの回答の多くは古くなっています。現在jmeter v5.1.1 r1855137を使用しています:

# Set var to increase available memory
JVM_ARGS="-Xms2048m -Xmx4096m"
# Run jmeter via sh script, e.g.:
/jmeter/5.1.1/libexec/bin/jmeter.sh -n -t testfile.jmx -l results.jtl -j log.txt

上記の値を使用して次のように表示される log.txt ファイルを介して、メモリの増加が利用可能であることを確認できます。

INFO o.a.j.JMeter: Max memory     =3817865216
于 2019-10-04T18:48:23.540 に答える
5

java -Xms<initial heap size> -Xmx<maximum heap size>私もこの問題を抱えていましたが、常にメモリが不足していたため、設定をどれだけ調整しても問題ありませんでした。最終的に、JMeter を GUI モードで (特にリスナーを使用して) 実行するとボトルネックが発生することがわかりました。JMeter を使用する最良の方法は、特に拡張テストまたは複数のスレーブ サーバーを実行する場合、次のような非 GUI モードです。

jmeter -n -t testplan.jmx -r

このリンクをチェックして、適切な方法でリモート テストを行う方法を読んでください: http://wiki.apache.org/jmeter/JMeterFAQ#How_to_do_remote_testing_the_.27proper_way.27.3F。「適切な方法」のリモート テストに関するセクションをお読みください。

お役に立てれば。

于 2012-10-25T19:50:38.270 に答える
4

多くのユーザーを使用したテスト中に、ツリー結果リスナーを使用していないかどうかを確認する必要があります。

この種の問題を回避するには、jmeterのベストプラクティスを確認してください。

よろしく

于 2012-08-09T20:22:14.393 に答える
2

jmeter.bat ファイルの HEAP SIZE を変更する必要があります。まず、2GB または 6GB (または入れたいサイズ) のサイズを mb に変換し、それを保存して .bat ファイルを再起動する必要があります。

「set HEAP= -Xms512m -Xmx512m」の値を設定します

于 2017-03-03T10:18:31.083 に答える
0

他の回答に記載されているようにヒープサイズを調整し、いくつかのベストプラクティスも考慮してください

  • テストを実行するときは (もちろん検証するときではありません)、非 GUI モードを使用します
  • View Result Tree などの負荷の高いリスナーを無効にしますが、代わりに Simple Data Writer を使用して後でデータを分析します

これらの 2 つの項目により、パフォーマンスとヒープ サイズの使用量が大幅に向上します。

于 2016-04-27T12:25:06.373 に答える