2013-01-29 17 views
10

Ho cercato di installare le macchine aws ec2 per il test di carico del mio server web usando jmeter ma sono bloccato. Ho un client jmeter sul mio computer locale e voglio configurare più nodi jmeter-server su ec2 per eseguire il test di caricamento e, fino ad ora, sto solo cercando di ottenere un nodo del server attivo e funzionante. Ma non ha ancora funzionato per me.test di carico distribuito su aws con jmeter

Ho lo stesso jmeter in esecuzione sul mio computer locale e il server e la versione java erano leggermente diversi ma non penso che sia questo il problema. La maggior parte delle persone ha avuto problemi a ottenere l'IP corretto per la connessione tra il client ei nodi del server, ma io, dopo molte ricerche, ho superato tutti questi problemi. Sono bloccato quando il nodo del server tenta di restituire il risultato e tenta di connettersi al client, la mia macchina locale. Il server tenta di connettersi all'indirizzo IP esterno del mio computer locale. Ma getta un errore di connessione rifiutato, che a quanto pare è stato causato dal timeout della connessione. Immagino che si tratti di un problema con il firewall, ma ho provato a spegnere il firewall sulla mia macchina locale, ma continua a generare lo stesso errore. Non sono sicuro di come posso superare questo e ci vuole troppo tempo che dovrebbe.

Qualcuno potrebbe suggerirmi qualcosa per risolvere questo problema? Grazie!

  • La mia macchina locale è un Mac OS X 10.7.5 ei miei nodi server sono su ubuntu.

Questo è l'errore che getta:

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 

risposta

0

Sembra che si deve spostare l'istanza jmeter-master (client jmeter) per istanza EC2 troppo.

Secondo JMeter Distributed Testing Step-by-step:

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

Per le prove distribuiti funzioni, i sistemi devono essere sulla stessa sottorete e RMI non sarà in grado di connettersi.
Sembra essere il tuo caso: jmeter-slaves sono in una sottorete (EC2) e jmeter-master in un'altra (la tua stazione di lavoro locale).

+0

Penso che la linea suggerisca che se stiamo usando più client, dovrebbero trovarsi nella stessa sottorete. Nel mio caso, sto usando solo uno. E per i server, dice: "3. il server si trova nella stessa subnet, se vengono utilizzati gli indirizzi IP 192.xxx o 10.xxx. Se il server non usa 192 o 10 indirizzi IP, non ci dovrebbe essere qualsiasi problema. "E sto usando 107.xxx in modo che non dovrebbe essere un problema se sto capendo correttamente. E i server conoscono l'ip esterno della mia workstation locale. Mi chiedo se devo usare i tunnel inversi ssh. – Nitin

8

Bene, ho finalmente risolto il problema. Ho finito per usare ssh reverse tunnel. Non sono sicuro che ci sia un modo migliore per farlo. Quindi, nel caso in cui qualcuno ha un problema simile, questo è come ho fatto:

  1. creare un tunnel ssh inversa dal server al client. Così, al lato client:

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

  2. start server e hanno un client.rmi.localport pure; il porto in cui è stato creato il tunnel;

  3. avviare il client come: ./bin/jmeter-server -Djava.rmi.server.hostname=127.0.0.1.

E questo è tutto! Avete pronti i test distribuiti.

3

soluzione che ha funzionato per me su Linux/OSX:

1.Sul cliente modifica bin/JMeter.proprietà e aggiungere:

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

2.Sulla Modifica server bin/jmeter.properties e aggiungere:

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

3.Now connettersi al server utilizzando questo ssh 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. Modifica lo script jmeter-server per avviare jmeter.sh

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

5.Now eseguire sul server:

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

6.And sul jmeter corsa cliente con gui o aggiungere -n se non è necessario gui:

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

o, con la prova piano:

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

ho scritto un libero, open source script per contribuire a fare esattamente questo. Ho affrontato gli stessi problemi elencati dall'OP e, anche se alla fine sono riuscito a far funzionare le cose, non è mai stato grandioso e volevo qualcosa per automatizzare la seccatura.