JMeter:分布式(远程)测试:无法远程运行测试

标签 jmeter load-testing distributed-testing

我使用 JMeter 设置了分布式负载测试环境。我在 Windows Vista(主机)上运行 Linux 虚拟机 (CentOS)。 Linux VM 是 JMeter Master(客户端)。我有一台服务器(Linux CentOS),它是我的 JMeter Slave(服务器)。

我做了以下事情:

1)向客户端(主)jmeter.properties 添加以下内容:

remote_hosts=172.22.222.22:55501 #IP address of the JMeter Slave
client.rmi.localport=55512
mode=Batch
num_sample_threshold=250

2)在服务器(从机)jmeter.properties中添加以下内容:

server_port=55501
server.rmi.localhostname=172.22.222.22
server.rmi.localport=55511

3)向服务器(从机)jmeter-server添加以下内容:

RMI_HOST_DEF=-Djava.rmi.server.hostname=172.22.222.22

4)然后从我的师父那里,我做了:

ssh -R 55512:localhost:55512 172.22.222.22

5)然后我启动了jmeter服务器:

sudo ./jmeter-server

我得到了:

Using local port: 55511
Created remote object: UnicastServerRef [liveRef: [endpoint:[172.22.222.22:55511](local),objID:[637a4bg5:14185b4361e:-7fff, 894250217845851586]]]

6) 然后从我的 Master 处启动了 JMeter GUI,然后执行了 运行-->远程启动-->172.22.222.22

我收到以下错误:

2013/10/04 16:03:06 ERROR - jmeter.gui.action.RemoteStart: Failed to initialise remote engine java.rmi.ConnectException: Connection refused to host: 172.22.222.22; 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.newCall(UnicastRef.java:340)
    at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
    at java.rmi.Naming.lookup(Naming.java:101)
    at org.apache.jmeter.engine.ClientJMeterEngine.getEngine(ClientJMeterEngine.java:54)
    at org.apache.jmeter.engine.ClientJMeterEngine.<init>(ClientJMeterEngine.java:67)
    at org.apache.jmeter.gui.action.RemoteStart.doRemoteInit(RemoteStart.java:176)
    at org.apache.jmeter.gui.action.RemoteStart.doAction(RemoteStart.java:79)
    at org.apache.jmeter.gui.action.ActionRouter.performAction(ActionRouter.java:81)
    at org.apache.jmeter.gui.action.ActionRouter.access$000(ActionRouter.java:40)
    at org.apache.jmeter.gui.action.ActionRouter$1.run(ActionRouter.java:63)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:727)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:688)
    at java.awt.EventQueue$3.run(EventQueue.java:686)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:697)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Caused by: java.net.ConnectException: Connection refused
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
    at java.net.Socket.connect(Socket.java:579)
    at java.net.Socket.connect(Socket.java:528)
    at java.net.Socket.<init>(Socket.java:425)
    at java.net.Socket.<init>(Socket.java:208)
    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)
    ... 26 more

谁能帮我弄清楚我做错了什么,以及如何解决这个问题? 我尝试关闭客户端和服务器上的 iptables,但我得到了同样的结果:

sudo service iptables stop
sudo chkconfig iptables off

最佳答案

我见过这个问题。您需要设置从主机到客户端的反向 SSH 隧道以进行结果传输。检查这个:http://rolfje.wordpress.com/2012/02/16/distributed-jmeter-through-vpn-and-ssl/

关于JMeter:分布式(远程)测试:无法远程运行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19192244/

相关文章:

http - 在 Jmeter http 请求中使用 vars.get 而不是 '$'

testing - 如何计算负载测试中使用的并发用户数?

TFS 负载测试 Web 测试

ssl - Jmeter 分布式测试不适用于双向 SSL 握手

java - Jmeter,无法为下面提到的场景开发脚本

json - 在 JMeter 查看结果树中看不到 JSON 响应

json - Jmeter:重用和更改 Json 响应作为下一个请求的正文

performance - JMeter:高斯随机计时器与泊松随机计时器

java - 如何修复 JMeter 中的 java.io.NotSerializedException : org. apache.jmeter.JMeter$ListenToTest?

JMeter:Linux 环境中的分布式(远程)测试