16

JMeter を分散モードでセットアップしようとしています。EC2 インスタンスで実行しているサーバーがあり、ローカル コンピューターでマスターを実行したいと考えています。サーバー上でRMIを正しく動作させるためにいくつかの希望を飛び越えなければなりませんでしたが、「java.rmi.server.hostname」をec2インスタンスのIPに設定することで解決しました。

次の (そしてできれば最後の) 問題は、サーバーがマスターに通信することです。

問題は、内部ネットワークからこれを行っているため、外部接続の IP (92.XXX.XXX.XXX. XXX)。

これは jmeter-server.log で確認できます。

エラー - jmeter.samplers.RemoteListenerWrapper: testStarted(host) java.rmi.ConnectException: ホストへの接続が拒否されました: 192.168.1.50; ネストされた例外は次のとおりです。

そのホスト IP が間違っています。92.XXX.XXX.XX のアドレスである必要があります。これは、マスターログに次のように表示されるためだと思います。

2012/07/29 20:45:25 情報 - jmeter.JMeter: IP: 192.168.1.50 名前: XXXXXX.local フルネーム: 192.168.1.50

そして、この IP は RMI セットアップ中にサーバーに送信されます。

したがって、次の 2 つのオプションがあると思います。

  1. マスターに外部 IP を送信するように指示する
  2. マスターの外部 IP に接続するようにサーバーに指示します。

しかし、これらのコマンドを設定する場所がわかりません。

どんな助けでも役に立ちます。

4

4 に答える 4

27

将来の読者のために、答えを「いいえ」と考えないでください。可能です!さらに、ファイアウォールを適切な場所に保つことができます。

この場合、ポート 4000 経由ですべてを実行しました。

分散テスト用に JMeter クライアントとサーバーを接続して、異なるネットワーク間で Amazon EC2 インスタンスとローカル開発マシンを使用する方法。

設定:

  1. JMeter 2.13 クライアント: ローカル開発コンピューター (別のネットワーク)
  2. JMeter 2.13 サーバー: Amazon EC2 インスタンス

次のように、分散クライアント/サーバー JMeter 接続を構成しました。

1.ファイアウォール/ルーターにポート転送ルールを追加しました:

  • ポート: 4000
  • 宛先: LAN 上の JMeter クライアントのプライベート IP アドレス。

2. EC2 インスタンスで「セキュリティ グループ」設定を構成しました。

  • タイプ: 許可: インバウンド
  • ポート: 4000
  • ソース: JMeter クライアントのパブリック IP アドレス (開発用コンピューター/ネットワークのパブリック IP)

更新: 既に SSH 接続がある場合は、接続に SSH トンネルを使用できます。これにより、ファイアウォール ルールを追加する必要がなくなります。

$ ssh -i ~/.ssh/54-179-XXX-XXX.pem ServerAliveInterval=60 -R 4000:localhost:4000 jmeter@54.179.XXX.XXX

3. クライアント $JMETER_HOME/bin/jmeter.properties ファイルの RMI セクションを構成します。

ここには、変更したデフォルト以外の値のみが含まれていることに注意してください。

#---------------------------------------------------------------------------
# Remote hosts and RMI configuration
#---------------------------------------------------------------------------

# Remote Hosts - comma delimited
# Add EC2 JMeter server public IP address:Port combo
remote_hosts=127.0.0.1,54.179.XXX.XXX:4000

# RMI port to be used by the server (must start rmiregistry with same port)
server_port=4000

# Parameter that controls the RMI port used by the RemoteSampleListenerImpl (The Controler)
# Default value is 0 which means port is randomly assigned
# You may need to open Firewall port on the Controller machine
client.rmi.localport=4000

# To change the default port (1099) used to access the server:
server.rmi.port=4000

# To use a specific port for the JMeter server engine, define
# the following property before starting the server:
server.rmi.localport=4000

4. リモート サーバーの $JMETER_HOME/bin/jmeter.properties ファイルの RMI セクションを次のように構成します。

#---------------------------------------------------------------------------
# Remote hosts and RMI configuration
#---------------------------------------------------------------------------

# RMI port to be used by the server (must start rmiregistry with same port)
server_port=4000

# Parameter that controls the RMI port used by the RemoteSampleListenerImpl (The Controler)
# Default value is 0 which means port is randomly assigned
# You may need to open Firewall port on the Controller machine
client.rmi.localport=4000

# To use a specific port for the JMeter server engine, define
# the following property before starting the server:
server.rmi.localport=4000

5. JMeter サーバー/スレーブを次のように起動します。

jmeter-server -Djava.rmi.server.hostname=54.179.XXX.XXX

ここで、54.179.XXX.XXX は EC2 サーバーのパブリック IP アドレスです。

6. JMeter クライアント/マスターを次のように開始しました。

jmeter -Djava.rmi.server.hostname=121.73.XXX.XXX

ここで、121.73.XXX.XXX はクライアント コンピューターのパブリック IP アドレスです。

7. JMeter テスト スイートを実行しました。

ここに画像の説明を入力 JMeter GUI ログ出力

成功!

于 2015-06-24T08:43:32.093 に答える
7

同様の問題がありました。JMeter サーバーが、テストの結果を送信するために間違ったアドレスに接続しようとしました (localhost に接続しようとしました)。

JMeter マスターの起動時に次のパラメーターを設定することで、これを解決しました。

-Djava.rmi.server.hostname=xx.xx.xx.xx

于 2013-09-05T08:24:39.327 に答える
5

これは機能しないようです。DistributedJMeterTestingは、分散環境での負荷テストの要件を説明しています。2番目と3番目は、私が信じるあなたのユースケースに特有のものです。

  1. システムのファイアウォールがオフになっています。
  2. すべてのクライアントは同じサブネット上にあります。
  3. 192.xxxまたは10.xxxのIPアドレスが使用されている場合、サーバーは同じサブネット内にあります。
  4. JMeterがサーバーにアクセスできることを確認してください。
  5. すべてのシステムで同じバージョンのJMeterを使用していることを確認してください。バージョンの混合は正しく機能しない場合があります。
于 2012-07-30T20:36:33.320 に答える
0

ゲームでは非常に遅いかもしれませんが、それでも. これをjmeter 5.3で実行しています。

そのため、aws でスレーブを設定し、ローカル マシンでコントローラーを設定して、動作させることができます。

  1. スレーブに適切なローカルポートとホスト名があることを確認してください。スレーブのホスト名は、ec2 インスタンスのパブリック dns である必要があります。
  2. AWS に適切なセキュリティ ポリシーがあることを確認してください。
  3. コントローラー (ローカル マシン) の場合は、必ずパラメーター「-Djava.rmi.server.hostname=」を指定して実行してください。「私のパブリックIPアドレス」をグーグルで検索すると、IPを取得できます。間違いなく、192.xxx.xxx.x または 172.xx.xxx ではありません。
  4. 次に、コントローラーとして使用されているマシンをポート転送するようにモデムを構成する必要があります。ポートは、スレーブ ログから取得できます (FINE を持つもの: RMI RenewClean .....、ログを詳細に設定する必要があります)。または、DMZ を設定し、コントローラー マシンを配置します。危険だけど試乗時だけは便利、その後は忘れずに
  5. その後、動作するはずです。
于 2021-04-02T04:30:09.467 に答える