2013-01-29 53 views
10

Tôi đã cố gắng để thiết lập aws ec2 máy để thử nghiệm tải của máy chủ web của tôi bằng cách sử dụng jmeter nhưng tôi bị mắc kẹt. Tôi có một máy khách jmeter trên máy cục bộ của mình và tôi muốn thiết lập nhiều nút jmeter-server trên ec2 để thực hiện kiểm tra tải và cho đến nay, chỉ cần cố gắng để có được một nút máy chủ và chạy. Nhưng nó đã không làm việc cho tôi được nêu ra.kiểm tra tải phân tán trên aws với jmeter

Tôi có cùng một jmeter chạy trên máy cục bộ của tôi và máy chủ và phiên bản java có một chút khác biệt nhưng tôi không nghĩ đó là vấn đề. Hầu hết mọi người đã gặp vấn đề với việc nhận được ip chính xác để kết nối giữa máy khách và các nút máy chủ nhưng tôi, sau rất nhiều tìm kiếm, đã vượt qua tất cả những vấn đề đó. Tôi bị kẹt khi nút máy chủ cố gắng trả về kết quả và cố gắng kết nối với máy khách, máy cục bộ của tôi. Máy chủ cố gắng kết nối với địa chỉ IP bên ngoài của máy cục bộ của tôi. Nhưng nó ném một kết nối từ chối lỗi, mà rõ ràng là do thời gian chờ kết nối. Tôi đoán đó là một số vấn đề tường lửa nhưng tôi đã cố gắng tắt tường lửa trên máy địa phương của tôi nhưng nó vẫn ném cùng một lỗi. Tôi không chắc làm thế nào tôi có thể vượt qua điều này và nó lấy cách quá nhiều thời gian sau đó nó nên.

Ai đó có thể đề nghị tôi điều gì đó để giải quyết vấn đề này? Cảm ơn!

  • Máy cục bộ của tôi là Mac OS X 10.7.5 và các nút máy chủ của tôi có trên ubuntu.

Đây là lỗi mà nó ném:

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 

Trả lời

0

Hình như bạn phải di chuyển dụ jmeter-chủ của bạn (jmeter client) để EC2 dụ quá.

Theo JMeter Distributed Testing Step-by-step:

2. check all the clients are on the same subnet; 

Để thử nghiệm phân phối để làm việc, hệ thống phải trên cùng một subnet, nếu không RMI sẽ không thể kết nối.
Hình như trường hợp của bạn: jmeter-nô lệ nằm trong một mạng con (EC2) và jmeter-master ở một mạng con khác (máy trạm cục bộ của bạn).

+0

Tôi nghĩ rằng dòng đó gợi ý rằng nếu chúng ta đang sử dụng nhiều máy khách, chúng phải nằm trên cùng một mạng con. Trong trường hợp của tôi, tôi chỉ sử dụng một. Và đối với các máy chủ, nó nói: "3. máy chủ nằm trong cùng một mạng con, nếu địa chỉ IP 192.xxx hoặc 10.xxx được sử dụng. Nếu máy chủ không sử dụng địa chỉ 192 hoặc 10 ip, không nên có "Và tôi đang sử dụng 107.xxx để không phải là vấn đề nếu tôi hiểu chính xác. Và các máy chủ biết ip bên ngoài của máy trạm cục bộ của tôi. Tôi tự hỏi nếu tôi phải sử dụng đường hầm ngược ssh. – Nitin

8

Vâng, cuối cùng tôi đã giải quyết được vấn đề. Tôi đã kết thúc bằng cách sử dụng đường hầm ngược ssh. Tôi không chắc chắn nếu có một cách tốt hơn để làm điều này mặc dù. Vì vậy, trong trường hợp bất kỳ ai có vấn đề tương tự, thì đây là cách tôi đã thực hiện:

  1. Tạo đường hầm ssh ngược từ máy chủ cho máy khách. Vì vậy, tại phía khách hàng:

    ssh -Nf -R [client.rmi.localport]:localhost:[client.rmi.localport on serverside] [email protected]

  2. bắt đầu máy chủ và có một client.rmi.localport cũng; cổng mà đường hầm được tạo ra;

  3. bắt đầu ứng dụng khách dưới dạng: ./bin/jmeter-server -Djava.rmi.server.hostname=127.0.0.1.

Và đó là nó! Bạn đã sẵn sàng thử nghiệm phân tán của mình.

3

Giải pháp mà làm việc cho tôi trên Linux/OSX:

1.On client chỉnh sửa bin/jmeter.tính và thêm:

remote_hosts=127.0.0.1:55501 
client.rmi.localport=55512 
mode=Batch 
num_sample_threshold=250 

2.On server chỉnh sửa bin/jmeter.properties và thêm:

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

3.Now kết nối đến máy chủ sử dụng ssh này tunel:

ssh -L 55501:127.0.0.1:55501 -L 55511:127.0.0.1:55511 -R 55512:127.0.0.1:55512 [email protected] 

4.Chỉnh sửa tập lệnh jmeter-server để bắt đầu jmeter.sh

${DIRNAME}/jmeter.sh ${RMI_HOST_DEF} -Dserver_port=${SERVER_PORT:-1099} -s -j jmeter-server.log "[email protected]" 

5.Now chạy trên máy chủ:

bin/jmeter-server -Djava.rmi.server.hostname=127.0.0.1 

6.And trên jmeter client chạy với gui hoặc thêm -n nếu gui là không cần thiết:

bin/jmeter.sh -Djava.rmi.server.hostname=127.0.0.1 

hay, với thử nghiệm kế hoạch:

bin/jmeter.sh -Djava.rmi.server.hostname=127.0.0.1 -t /path/to/test-plan.jmx 
0

Tôi đã viết miễn phí, open source script để giúp thực hiện chính xác việc này. Tôi đã đi qua các vấn đề tương tự được liệt kê bởi OP và, mặc dù tôi đã nhận được những điều làm việc cuối cùng, nó đã không bao giờ tuyệt vời và tôi muốn một cái gì đó để tự động hóa đi những rắc rối.

Các vấn đề liên quan