amazon-ec2 - 使用 jmeter 在 aws 上进行分布式负载测试

标签 amazon-ec2 jmeter firewall load-testing connection-timeout

我一直在尝试使用 jmeter 设置 aws ec2 机器来对我的 Web 服务器进行负载测试,但我陷入了困境。我的本地计算机上有一个 jmeter 客户端,我想在 ec2 上设置多个 jmeter 服务器节点来进行负载测试,到目前为止,我只是尝试启动并运行一个服务器节点。但对我来说还没有成功。

我在本地计算机和服务器上运行相同的 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

最佳答案

好吧,我终于解决了这个问题。我最终使用了 ssh 反向隧道。我不确定是否有更好的方法来做到这一点。因此,如果有人遇到类似的问题,我就是这样做的:

  1. 创建从服务器到客户端的反向 ssh 隧道。因此,在客户端:

    ssh -Nf -R [client.rmi.localport]:localhost:[服务器端的client.rmi.localport] user@server

  2. 启动服务器并有一个client.rmi.localport;创建隧道的端口;

  3. 启动客户端:./bin/jmeter-server -Djava.rmi.server.hostname=127.0.0.1

就是这样!您已准备好分布式测试。

关于amazon-ec2 - 使用 jmeter 在 aws 上进行分布式负载测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14590453/

相关文章:

amazon-web-services - AWS Batch EC2 配置时间

amazon-web-services - 在 AWS linux AMI 中使用 Torch 和神经风格艺术时,加载模块 'libjpeg' 时出错,并且找不到 <image.loadJPG> libjpeg 包

jdbc - 带有 JDBC 结果集变量和计数器变量的 JMeter 嵌套变量引用

JMeter 远程测试失败,错误消息 "Engine is busy - please try later"

centos - Firewalld - 我做错了什么(允许来自单一来源的端口,阻止其他人使用相同的端口)

eclipse - 为什么 Eclipse 需要传入网络连接(使用 OS X)?

python - 从企业防火墙后面使用 urllib2 打开网站 - 11004 getaddrinfo 失败

amazon-web-services - Amazon EC2 是否允许安装工具?

MySQL 从 7 月 1 日午夜开始消耗 80-100% 的 CPU,也就是 EBS 连接问题发生后的一天左右

性能测试音频 jmeter