栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

设置JMeter以便在AWS中进行具有连接问题的分布式测试

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

设置JMeter以便在AWS中进行具有连接问题的分布式测试

我们有类似的任务,也遇到了很多问题。以下是整个过程的详细信息以及我们为解决遇到的问题而采取的措施。希望能帮助到你。

我们需要从位于世界各地的5台服务器发送请求。因此,我们在AWS中启动了5个微实例,每个实例位于不同的区域。我们选择的地区在地理位置上要尽可能地分开。

远程(服务器)JMeters配置

这是我们设置每个实例的方式。

  1. 安装的java:
        $ 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
  1. 编辑了JMeter安装文件夹

    jmeter.properties
    中的
    /bin
    文件,并取消注释了包含
    server.rmi.localport
    设置的行。我们将端口更改为50000。

    server.rmi.localport=50000
  2. 启动JMeter服务器。确保服务器报告侦听的地址和端口正确。

        $ cd ~/jmeter/apache-jmeter-2.9/bin    $ vi jmeter-server

本地(客户端)JMeter配置

然后,我们设置JMeter以在本地客户端计算机上的这些实例上远程运行测试:

  • 确保使用与服务器上运行的版本相同的JMeter。如上所述安装了Java和JMeter。
  • 通过编辑
    jmeter.properties
    可以
    bin
    在JMeter安装文件夹中找到的文件来启用远程测试。
    remote_hosts
    需要使用我们要连接到的远程服务器的公共DNS来设置该参数。
  • remote_hosts=54.x.x.x,54.x.x.x,54.x.x.x,54.x.x.x,54.x.x.x

现在,我们可以告诉我们的客户端JMeter实例在任何或所有指定的远程服务器上运行测试。

问题和解决方案

以下是我们遇到的问题以及我们如何解决它们:

  1. 客户端失败:

错误-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=-Djava.rmi.server.hostname=54.xx.xx.xx

现在,AWS实例返回了服务器的外部IP,我们可以开始测试了。

  1. 当服务器节点尝试返回结果并尝试连接到客户端时,服务器尝试连接到本地计算机的外部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
传递结果。这最终被隧穿回客户端。

  1. 闲置一小会后,与服务器的SSH连接不断断开。为了防止这种情况的发生,我们在每个SSH隧道设置中添加了一个参数,指示客户端等待60秒,然后再向服务器发送空数据包以保持连接有效:
    $ 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设置的版本:

 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
设置好之后再使用。)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/382534.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号