10

jmeter を使用して Web サーバーの負荷テストのために aws ec2 マシンをセットアップしようとしましたが、行き詰まりました。ローカル マシンに jmeter クライアントがあり、ec2 に複数の jmeter-server ノードをセットアップして負荷テストを実行したいと考えています。これまでのところ、1 つのサーバー ノードを起動して実行しようとしています。しかし、それはまだうまくいきません。

ローカル マシンとサーバーで同じ jmeter を実行していますが、Java のバージョンは少し異なりましたが、それが問題だとは思いません。ほとんどの人は、クライアント ノードとサーバー ノードの間を接続するための正しい IP を取得する際に問題を抱えていますが、私は多くの検索を行った後、これらの問題をすべて解決しました。サーバーノードが結果を返そうとし、クライアントであるローカルマシンに接続しようとしたときに行き詰まりました。サーバーはローカル マシンの外部 IP アドレスに接続しようとします。ただし、接続タイムアウトが原因であると思われる接続拒否エラーがスローされます。ファイアウォールの問題だと思いますが、ローカルマシンでファイアウォールをオフにしようとしましたが、それでも同じエラーがスローされます。どうすればこれを乗り越えられるかわかりませんが、本来よりも時間がかかりすぎています。

誰かがこれを解決するために私に何か提案してもらえますか? ありがとう!

  • 私のローカル マシンは Mac OS X 10.7.5 で、サーバー ノードは ubuntu 上にあります。

これはスローされるエラーです:

2013/01/29 12:23:37 ERROR - jmeter.samplers.RemoteListenerWrapper: testStarted(host) java.rmi.ConnectException: Connection refused to host: xxx.xxx.xxx.10; nested exception is: 
java.net.ConnectException: Connection refused
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:619)
at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216)
at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:128)
at org.apache.jmeter.samplers.RemoteSampleListenerImpl_Stub.testStarted(Unknown Source)
at org.apache.jmeter.samplers.RemoteListenerWrapper.testStarted(RemoteListenerWrapper.java:83)
at org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfStart(StandardJMeterEngine.java:226)
at org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:349)
at java.lang.Thread.run(Thread.java:636)
Caused by: java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:327)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:193)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:180)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:384)
at java.net.Socket.connect(Socket.java:546)
at java.net.Socket.connect(Socket.java:495)
at java.net.Socket.<init>(Socket.java:392)
at java.net.Socket.<init>(Socket.java:206)
at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:40)
at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:146)
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613)
... 8 more
4

4 に答える 4

8

さて、私はついに問題を解決しました。結局、sshリバーストンネルを使用しました。ただし、これを行うためのより良い方法があるかどうかはわかりません。したがって、誰かが同様の問題を抱えている場合に備えて、これが私が行った方法です。

  1. サーバーからクライアントへのリバース ssh トンネルを作成します。したがって、クライアント側では:

    ssh -Nf -R [client.rmi.localport]:localhost:[client.rmi.localport on serverside] user@server

  2. サーバーを起動し、client.rmi.localport も用意します。トンネルが作成されたポート。

  3. クライアントを次のように起動します./bin/jmeter-server -Djava.rmi.server.hostname=127.0.0.1

以上です!分散テストの準備が整いました。

于 2013-01-30T19:03:13.850 に答える
0

まさにこれを行うのに役立つ無料のオープン ソース スクリプトを作成しました。OPに記載されているのと同じ問題を経験しましたが、最終的には機能しましたが、決して素晴らしいものではなく、面倒を自動化する何かが必要でした.

于 2015-08-18T20:34:48.053 に答える
0

jmeter-master インスタンス (jmeter クライアント) も EC2 インスタンスに移動する必要があるようです。

JMeter Distributed Testing のステップバイステップに従って:

2. check all the clients are on the same subnet;

分散テストが機能するには、システムが同じサブネット上にある必要があります。そうでない場合、RMI は接続できません。
あなたの場合のように見えます: jmeter-slaves は 1 つのサブネット (EC2) にあり、jmeter-master は別のサブネット (ローカルワークステーション) にあります。

于 2013-01-29T22:15:22.443 に答える