我必须使用JMeter进行分布式测试。目的是使AWS中的多个远程服务器由一个本地服务器控制,以将文件下载请求发送到AWS中的另一服务器。
如何在AWS中设置不同的服务器? 如何远程连接到他们?
有人可以提供一些逐步说明吗? 我已经尝试了几种方法,但是一直遇到跨网络的连接问题。
我们有类似的任务,也遇到了很多问题。以下是整个过程的详细信息以及我们为解决遇到的问题而采取的措施。希望能帮助到你。
我们需要从位于世界各地的5台服务器发送请求。因此,我们在AWS中启动了5个微实例,每个实例位于不同的区域。我们选择的地区在地理位置上要尽可能地分开。
这是我们设置每个实例的方式。
$ sudo apt-get update $ sudo apt-get install default-jre 2. 已安装的JMeter: $ mkdir jmeter $ cd jmeter; $ wget ftp://apache.mirrors.pair.com//jmeter/binaries/apache-jmeter-2.9.tgz $ gunzip apache-jmeter-2.9.tgz;tar xvf apache-jmeter-2.9.tar
编辑了JMeter安装文件夹jmeter.properties中的/bin文件,并取消注释了包含server.rmi.localport设置的行。我们将端口更改为50000。
jmeter.properties
/bin
server.rmi.localport
server.rmi.localport=50000
启动JMeter服务器。确保服务器报告侦听的地址和端口正确。
$ cd ~/jmeter/apache-jmeter-2.9/bin $ vi jmeter-server
然后,我们设置JMeter以在本地客户端计算机上的这些实例上远程运行测试:
bin
remote_hosts
remote_hosts=54.x.x.x,54.x.x.x,54.x.x.x,54.x.x.x,54.x.x.x
现在,我们可以告诉我们的客户端JMeter实例在任何或所有指定的远程服务器上运行测试。
以下是我们遇到的问题以及我们如何解决它们:
错误-jmeter.engine.ClientJMeterEngine:java.rmi.ConnectException:连接- 拒绝托管:127.0.0.1
这是由于服务器主机由于Amazon NAT返回了私有IP地址作为其地址。我们通过设置脚本在启动服务器中包括的参数RMI_HOST_DEF来解决此问题/usr/local/jmeter/bin/jmeter- server:
RMI_HOST_DEF
/usr/local/jmeter/bin/jmeter- server
RMI_HOST_DEF=-Djava.rmi.server.hostname=54.xx.xx.xx
现在,AWS实例返回了服务器的外部IP,我们可以开始测试了。
2013/05/16 12:23:37错误- jmeter.samplers.RemoteListenerWrapper:testStarted(host)java.rmi.ConnectException:拒绝主机连接:xxx.xxx.xxx.xx;
我们通过在客户端设置反向隧道解决了此问题。
* 首先,我们编辑了JMeter安装文件夹`jmeter.properties`中的`/bin`文件,并取消了包含该`client.rmi.localport`设置的行的注释。我们将端口更改为60000: client.rmi.localport=60000 * 然后,我们使用SSH连接到每台服务器,并在客户端上设置到60000端口的反向隧道。 $ ssh -i ~/.ssh/54-x-x-x.us-east.pem -R 60000:localhost:60000 ubuntu@54.x.x.x
由于JMeter服务器需要能够将测试结果传递给客户端,因此我们将每个会话保持打开状态。
* 然后,我们`JVM_ARGS`在客户端的`jmeter.sh`文件`/bin`夹中的文件中设置环境变量: export JVM_ARGS="-Djava.rmi.server.hostname=localhost"
这样,JMeter将告诉服务器连接以localhost:60000传递结果。这最终被隧穿回客户端。
localhost:60000
$ ssh -i ~/.ssh/54-x-x-x.us-east.pem -o ServerAliveInterval=60 -R 60000:localhost:60000 ubuntu@54.x.x.x
(.ssh/config所有必需的SSH设置的版本:
.ssh/config
Host 54.x.x.x HostName 54.x.x.x Port 22 User ubuntu ServerAliveInterval 60 RemoteForward 127.0.0.1:60000 127.0.0.1:60000 IdentityFile ~/.ssh/54-x-x-x.us-east.pem IdentitiesOnly yes
ssh 54.x.x.x设置好之后再使用。)
ssh 54.x.x.x