JMeter与远程服务器

时间:2012-07-29 19:04:14

标签: testing amazon-ec2 jmeter

我正在尝试以分布式模式设置JMeter。 我有一个运行ec2 intance的服务器,我希望主服务器在我的本地计算机上运行。 我不得不跳过一些希望让RMI在服务器上正常工作但是通过将“java.rmi.server.hostname”设置为ec2实例的IP来解决。

下一个(希望是最后一个)问题是服务器与主服务器进行通信。

问题在于,因为我是从内部网络执行此操作,所以当它应该发回我的外部连接的IP时,主机正在发送其本地/内部IP地址(192.168.1.XXX)(92.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 INFO - jmeter.JMeter:IP:192.168.1.50名称:XXXXXX.local FullName:192.168.1.50

在RMI设置期间,此IP将发送到服务器。

所以我认为我有两个选择:

  1. 告诉主人发送外部IP
  2. 告诉服务器连接主服务器的外部IP。
  3. 但我看不出在哪里设置这些命令。

    任何帮助都会有用。

4 个答案:

答案 0 :(得分:23)

为了未来读者的利益,不要拒绝回答。有可能的!另外,您可以保留防火墙。

在这种情况下,我通过端口4000做了一切。

如何将JMeter客户端和服务器连接到跨不同网络的Amazon EC2实例和本地开发计算机进行分布式测试。

设定:

  1. JMeter 2.13客户端:本地开发计算机(不同网络)
  2. JMeter 2.13服务器:Amazon EC2实例
  3. 我按如下方式配置了分布式客户端/服务器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测试套件。

    enter image description here JMeter GUI日志输出

    成功!

答案 1 :(得分:6)

我遇到了类似的问题:JMeter服务器试图连接到错误的地址以发送测试结果(它试图连接到localhost)。

我在启动JMeter主站时通过设置以下参数解决了这个问题:

-Djava.rmi.server.hostname = XX.XX.XX.XX

答案 2 :(得分:3)

看起来这不起作用Distributed JMeter Testing解释了分布式环境中负载测试的要求。 2号和3号特别适合您的用例。

  1. 系统上的防火墙已关闭。
  2. 所有客户都在同一子网上。
  3. 如果使用192.x.x.x或10.x.x.x ip地址,则服务器位于同一子网中。
  4. 确保JMeter可以访问服务器。
  5. 确保在所有系统上使用相同版本的JMeter。混合版本可能无法正常工作。

答案 3 :(得分: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. 那么它应该可以工作了。