|
JMeterはオープンソースのパフォーマンステストツールです。分散テストにJMeterを使用する場合は、いくつかの詳細事項と問題点を考慮する必要があります。そうしないと、テスト結果の精度と信頼性に影響が出る可能性があります。 I. JMeter分散テスト中に特別な注意が必要ないくつかの側面1. パラメータ化ファイルの場所と内容パラメータ化に CSV ファイルを使用する場合、つまり、CSV ファイルからデータを読み取ってテスト スクリプトに異なる入力値を提供する場合は、次の 2 つの点に注意する必要があります。
2. スレーブマシンからの応答データスレーブマシンでスクリプトを実行すると、アサーションが成功した場合、リクエストとレスポンスのデータはマスターマシンでは表示されません。スレーブのレスポンスは、アサーションが失敗した場合にのみ表示されます。これは、ネットワーク帯域幅を節約し、テスト効率を向上させるためです。分散テストでは通常、テスト結果の統計と分析に重点が置かれ、各リクエストの詳細なデータを表示することは重視されないためです。スレーブのレスポンスデータを表示する必要がある場合は、スレーブマシンでjmeter.logファイルを開くか、マスターマシンでJMeterプロパティをmode=Standardに設定できますが、ネットワークオーバーヘッドとテスト時間が増加します。 3. TCPサンプラーの設定TCP プロトコルに対して JMeter 分散テストを使用する場合は、次の 2 つの点に注意する必要があります。
4. LinuxでのJMeter環境変数の設定LinuxシステムでJMeterを使用している場合は、コマンドラインから直接JMeterを起動できるように、JMeter環境変数を設定する必要があります。具体的な手順は以下のとおりです。 /etc/profile ファイルを編集し、次の変数を追加します。 設定ファイルをすぐに有効にするには、次のコマンドを実行します。 インストールが成功したかどうかを確認するには、次のコマンドを実行します。 II. JMeter分散テストにおける一般的な問題と解決策質問 1: マスター ノードで jmeter-server.bat を実行すると、次のエラーが発生します: 「Exception creating connection to: 192.16..; nested exception is: java.io.FileNotFoundException: rmi_keystore.jks (The system cannot find the file provided)」。原因: JMeter バージョン 4.0 以降では、RMI 接続によるセキュア通信がデフォルトで有効になっています。これにはキーストアの作成が必要です。そのため、キーストアが作成されていない場合、このエラーが発生します。 解決:
注: マスター マシンとスレーブ マシンの両方の `jmeter.properties` ファイルで、パラメータ `server.rmi.ssl.disable` を `true` に変更します。 Linuxでは、次のコマンドを使用します:`vi jmeter.properties`。その後、`/server.rmi.ssl.disable/` を使って `jmeter.properties` を検索します。
質問 2: スレーブ (Linux システム) で jmeter-server を実行すると、「エラーが発生しました: 起動できません。localhost はループバック アドレスです」というエラーが発生します。理由: JMeter はデフォルトで RMI のホスト名として localhost を使用しますが、localhost はループバック アドレスであり、リモート接続には使用できません。 解決:
./jmeter-server を実行するだけです。 注: Linux でバックグラウンドで実行し、サーバーを有効にします: `nohup ./jmeter-server -Djava.rmi.server.hostname=192.16.. &` JMeterが正常に起動したかどうかを確認するには: `ps axu | grep jmeter` 質問 3: スレーブ マシンをリモートで起動すると、「Jmeter ネストされた例外は:java.net.ConnectException 接続がタイムアウトしました:connect」というエラーが発生します。原因: 次の理由が考えられます。
解決:
注: CentOS 7 でファイアウォールを無効にするには: `firewall-cmd --state` // ファイアウォールのステータスを確認します: 質問4:CSVファイルのパスを設定する際に、パスが間違っていると応答がありません。理由: JMeter が CSV ファイルを読み取るときに、ファイルが見つからない場合は、エラーを報告せずに無期限に待機します。 解決策: 相対パスを使用して CSV ファイルに名前を付けます。つまり、CSV ファイルを bin ディレクトリに直接配置し、JMeter パスにファイル名を直接入力します。 質問 5: (Linux) ポート 1099 がデフォルトで使用されている場合、使用中のポートを閉じるにはどうすればよいですか?理由: JMeter が分散テストに RMI を使用する場合、登録ポートとしてポート 1099 を使用する必要があります。このポートが他のプログラムによって使用されていると、jmeter-server の起動に失敗したり、スレーブが接続に失敗したりする可能性があります。 解決: 現在のすべての TCP ポートを表示するには、次のコマンドを実行します。 すべてのポート 1099 の使用状況を確認するには、次のコマンドを実行します。 ポート 1099 を使用するプログラムの PID を確認するには、次のコマンドを実行します。 プロセスを強制終了して、次のコマンドを実行します。 質問6: スレーブを使用してデータを送信した後、長時間応答がない場合はどうなるのでしょうか?原因: 次の理由が考えられます。
解決:
質問 7: JMeter が文字化けしたデータを返す場合はどうすればよいですか?原因: JMeter のデフォルトのエンコーディングがサーバーのエンコーディングと一致していないため、データ変換が失敗する可能性があります。 解決策: JMeter インストール パスの bin ディレクトリで、ファイル jmeter.properties を開き、Sampleresult.default.encoding の値を utf-8 に変更します。 質問8: JMeterを起動すると、次のエラーが発生します: VMの初期化中にエラーが発生しました。オブジェクトヒープに十分なスペースを予約できませんでした。errorlevel=1原因: JMeter のデフォルトのヒープ サイズがテスト負荷をサポートするのに不十分なため、メモリ オーバーフローが発生する可能性があります。 解決:
質問 9: データベース API テストに JMeter を使用する場合、getApps(int nu, int appID[]) のように、データベース インターフェイスで配列をパラメーターとして渡すと、実際の使用時に構文エラーが報告されます。原因: JMeter のデフォルトのパラメータ区切り文字はコンマですが、配列パラメータはセミコロンで区切る必要があるため、構文エラーが発生する可能性があります。 解決策: JMeter のデータベース接続構成で、パラメータ区切り文字をセミコロンに変更します。 質問 10: Windows コントローラ上の JMeter でパラメータ化用の CVS ファイルを追加する場合、ロード マシンにファイルがない場合、リモート起動は失敗します (CVS ファイル内の変数が参照されていない場合でも)。理由: これは、JMeter がリモートで起動するときにパラメータ ファイルの存在を確認し、ファイルが存在しない場合はエラーを報告するためと考えられます。 解決策: 同じパラメータ ファイルをロード マシンに追加するか、制御マシン上のパラメータ ファイルへの参照を削除します。 |