This question already has an answer here:
Jmeter distribtion testting on linux
(1 answer)
Closed 2 years ago.
I am running distributed load testing using JMeter. And I configured few new servers but the problem is it throwing the error "non-JRMP server at remote endpoint".
I followed the correct procedure of generating jks, starting the master, starting slave etc. And in both the client and server, I am able to start the jmeter-server.bat files and I see both the machines have started.
Please note - Firewall is already disabled
Slave:
Created remote object: UnicastServerRef2 [liveRef: [endpoint:192.168.0.3:3424,SSLRMIServerSocketFactory(host=192.168.0.3, keyStoreLocation=rmi_keystore.jks, type=JKS, trustStoreLocation=rmi_keystore.jks, type=JKS, alias=rmi),SSLRMIClientSocketFactory(keyStoreLocation=rmi_keystore.jks, type=JKS, trustStoreLocation=rmi_keystore.jks, type=JKS, alias=rmi),objID:[-39bc9d70:176812fac65:-7fff, 1785184603072403670]]]
Master:
Found ApacheJMeter_core.jar
Created remote object: UnicastServerRef2 [liveRef: [endpoint:192.168.0.1:27849,objID:[-763a229d:176811229c1:-7fff, -5773628807602928343]]]
Can someone suggest if there is anything can be done? All the machines are in same subnet.
jmeter log of master:
2020-12-20 09:41:34,608 INFO o.a.j.e.DistributedRunner: Configuring remote engine: 192.168.0.3
2020-12-20 09:41:34,608 INFO o.a.j.r.RmiUtils: Disabling SSL for RMI as server.rmi.ssl.disable is set to 'true'
2020-12-20 09:41:34,624 ERROR o.a.j.e.DistributedRunner: Failed to create engine at 192.168.0.3
java.rmi.ConnectIOException: non-JRMP server at remote endpoint
at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source) ~[?:1.8.0_241]
at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source) ~[?:1.8.0_241]
at sun.rmi.server.UnicastRef.newCall(Unknown Source) ~[?:1.8.0_241]
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source) ~[?:1.8.0_241]
at org.apache.jmeter.engine.ClientJMeterEngine.getEngine(ClientJMeterEngine.java:72) ~[ApacheJMeter_core.jar:5.2.1]
at org.apache.jmeter.engine.ClientJMeterEngine.(ClientJMeterEngine.java:85) ~[ApacheJMeter_core.jar:5.2.1]
at org.apache.jmeter.engine.DistributedRunner.createEngine(DistributedRunner.java:244) ~[ApacheJMeter_core.jar:5.2.1]
at org.apache.jmeter.engine.DistributedRunner.getClientEngine(DistributedRunner.java:221) ~[ApacheJMeter_core.jar:5.2.1]
at org.apache.jmeter.engine.DistributedRunner.init(DistributedRunner.java:94) ~[ApacheJMeter_core.jar:5.2.1]
at org.apache.jmeter.gui.action.RemoteStart.doAction(RemoteStart.java:80) ~[ApacheJMeter_core.jar:5.2.1]
at org.apache.jmeter.gui.action.ActionRouter.performAction(ActionRouter.java:88) ~[ApacheJMeter_core.jar:5.2.1]
at org.apache.jmeter.gui.action.ActionRouter.lambda$actionPerformed$0(ActionRouter.java:70) ~[ApacheJMeter_core.jar:5.2.1]
at java.awt.event.InvocationEvent.dispatch(Unknown Source) [?:1.8.0_241]
at java.awt.EventQueue.dispatchEventImpl(Unknown Source) [?:1.8.0_241]
at java.awt.EventQueue.access$500(Unknown Source) [?:1.8.0_241]
at java.awt.EventQueue$3.run(Unknown Source) [?:1.8.0_241]
at java.awt.EventQueue$3.run(Unknown Source) [?:1.8.0_241]
at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_241]
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) [?:1.8.0_241]
at java.awt.EventQueue.dispatchEvent(Unknown Source) [?:1.8.0_241]
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) [?:1.8.0_241]
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) [?:1.8.0_241]
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) [?:1.8.0_241]
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) [?:1.8.0_241]
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) [?:1.8.0_241]
at java.awt.EventDispatchThread.run(Unknown Source) [?:1.8.0_241]
You have
server.rmi.ssl.disable=true - on the master
server.rmi.ssl.disable=false - on the slave
It leads to the following situation: master tries to communicate with the slave using plain text and the slave is expecting SSL encrypted messages therefore they cannot "understand" each other hence communication fails.
You either need to enable SSL on master, generate the keystore, etc. or to disable it on the slave(s)
More information:
Remote hosts and RMI configuration
How to Perform Distributed Testing in JMeter
Apache JMeter Distributed Testing Step-by-step
Related
lately I changed my PCs and right now I am using M1 MacBook Pro and Lenovo ThinkPad (Windows). On Firefox, I configured my proxy and certificate setting just as I did with my previous computers. But when I try to record the traffic of targeted websites, I receive different certificate and SSL errors. I see the requests on View Results Tree and Recording Controller, but i get the following errors:
javax.net.ssl.SSLException: java.lang.NullPointerException
at sun.security.ssl.Alert.createSSLException(Alert.java:133)
at sun.security.ssl.TransportContext.fatal(TransportContext.java:370)
at sun.security.ssl.TransportContext.fatal(TransportContext.java:313)
at sun.security.ssl.TransportContext.fatal(TransportContext.java:308)
at sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1463)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:414)
at sun.security.ssl.SSLSocketImpl.ensureNegotiated(SSLSocketImpl.java:819)
at sun.security.ssl.SSLSocketImpl.access$200(SSLSocketImpl.java:75)
at sun.security.ssl.SSLSocketImpl$AppInputStream.read(SSLSocketImpl.java:902)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
at java.io.BufferedInputStream.read(BufferedInputStream.java:265)
at org.apache.jmeter.protocol.http.proxy.HttpRequestHdr.parse(HttpRequestHdr.java:138)
at org.apache.jmeter.protocol.http.proxy.Proxy.run(Proxy.java:202)
Caused by: java.lang.NullPointerException
at sun.security.ssl.HKDF.extract(HKDF.java:93)
at sun.security.ssl.HKDF.extract(HKDF.java:119)
at sun.security.ssl.ServerHello.setUpPskKD(ServerHello.java:1147)
at sun.security.ssl.ServerHello.access$900(ServerHello.java:53)
at sun.security.ssl.ServerHello$T13ServerHelloProducer.produce(ServerHello.java:547)
at sun.security.ssl.SSLHandshake.produce(SSLHandshake.java:420)
at sun.security.ssl.ClientHello$T13ClientHelloConsumer.goServerHello(ClientHello.java:1096)
at sun.security.ssl.ClientHello$T13ClientHelloConsumer.consume(ClientHello.java:1032)
at sun.security.ssl.ClientHello$ClientHelloConsumer.onClientHello(ClientHello.java:716)
at sun.security.ssl.ClientHello$ClientHelloConsumer.consume(ClientHello.java:683)
at sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:376)
at sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:479)
at sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:457)
at sun.security.ssl.TransportContext.dispatch(TransportContext.java:200)
at sun.security.ssl.SSLTransport.decode(SSLTransport.java:154)
at sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1290)
at sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1199)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:401)
... 7 more
javax.net.ssl.SSLException: Session has no PSK
at sun.security.ssl.Alert.createSSLException(Unknown Source)
at sun.security.ssl.Alert.createSSLException(Unknown Source)
at sun.security.ssl.TransportContext.fatal(Unknown Source)
at sun.security.ssl.TransportContext.fatal(Unknown Source)
at sun.security.ssl.TransportContext.fatal(Unknown Source)
at sun.security.ssl.PreSharedKeyExtension.checkBinder(Unknown Source)
at sun.security.ssl.PreSharedKeyExtension.access$1100(Unknown Source)
at sun.security.ssl.PreSharedKeyExtension$CHPreSharedKeyUpdate.consume(Unknown Source)
at sun.security.ssl.SSLExtension.consumeOnTrade(Unknown Source)
at sun.security.ssl.SSLExtensions.consumeOnTrade(Unknown Source)
at sun.security.ssl.ServerHello$T13ServerHelloProducer.produce(Unknown Source)
at sun.security.ssl.SSLHandshake.produce(Unknown Source)
at sun.security.ssl.ClientHello$T13ClientHelloConsumer.goServerHello(Unknown Source)
at sun.security.ssl.ClientHello$T13ClientHelloConsumer.consume(Unknown Source)
at sun.security.ssl.ClientHello$ClientHelloConsumer.onClientHello(Unknown Source)
at sun.security.ssl.ClientHello$ClientHelloConsumer.consume(Unknown Source)
at sun.security.ssl.SSLHandshake.consume(Unknown Source)
at sun.security.ssl.HandshakeContext.dispatch(Unknown Source)
at sun.security.ssl.HandshakeContext.dispatch(Unknown Source)
at sun.security.ssl.TransportContext.dispatch(Unknown Source)
at sun.security.ssl.SSLTransport.decode(Unknown Source)
at sun.security.ssl.SSLSocketImpl.decode(Unknown Source)
at sun.security.ssl.SSLSocketImpl.readHandshakeRecord(Unknown Source)
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at sun.security.ssl.SSLSocketImpl.ensureNegotiated(Unknown Source)
at sun.security.ssl.SSLSocketImpl.access$200(Unknown Source)
at sun.security.ssl.SSLSocketImpl$AppInputStream.read(Unknown Source)
at java.io.BufferedInputStream.fill(Unknown Source)
at java.io.BufferedInputStream.read(Unknown Source)
at org.apache.jmeter.protocol.http.proxy.HttpRequestHdr.parse(HttpRequestHdr.java:138)
at org.apache.jmeter.protocol.http.proxy.Proxy.run(Proxy.java:202)
org.apache.http.client.ClientProtocolException
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:187)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.executeRequest(HTTPHC4Impl.java:843)
at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:574)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:67)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1231)
at org.apache.jmeter.protocol.http.proxy.Proxy.run(Proxy.java:237)
Caused by: org.apache.http.ProtocolException: The server failed to respond with a valid HTTP response
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:149)
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:56)
at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:259)
at org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:163)
at org.apache.http.impl.conn.CPoolProxy.receiveResponseHeader(CPoolProxy.java:157)
at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:273)
at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:272)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
... 6 more
And on Sampler Result tab it shows me this warning:
ensure browser is set to accept the JMeter Proxy certificate
And how I configured Mozilla Firefox and JMeter:
Added localhost with 8888 port as my proxy
Added Jmeter Proxy certificate into my certificates
Made sure that JMeter is set to 8888 port.
Waiting for your help :)
Your configuration seems valid to me so I can only think of possible bug in Java runtime like JDK-8213202
So you might want to try i.e. Azul Zulu Builds of OpenJDK for arm-64 and see whether it resolves your issue.
Alternatively you can consider using JMeter Chrome Extension, in this case you won't have to worry about proxies and certificates
We are facing issues in JMeter remote testing. Master is stuck at:
Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
While the client is throwing:
Connection refused to host exception
We are running master like below:
.\jmeter <b>-Djava.rmi.server.hostname=10.19.120.43 </b> -n -t .\Test.jmx -R 10.75.225.188
But in the slave side test completion status is sent to some other IP address:
2020-06-11 15:54:01,788 INFO o.a.j.e.RemoteJMeterEngineImpl: Creating JMeter engine on host 10.75.225.188 base '.'
<br>2020-06-11 15:54:01,788 INFO o.a.j.e.RemoteJMeterEngineImpl:<b> Remote client host: 10.19.120.43</b>
<br>2020-06-11 15:54:01,788 INFO o.a.j.s.FileServer: Set new base='.'
<br>2020-06-11 15:54:01,793 INFO o.a.j.e.RemoteJMeterEngineImpl: Cleaning previously set properties: {sample_variables=ulp_buffer_fill,ulp_lag_time,ulp_play_time,ulp_lag_ratio,ulp_dwn_time,ulp_hits,ulp_avg_chunk_time,ulp_avg_manifest_time}
2020-06-11 15:54:01,794 INFO o.a.j.e.StandardJMeterEngine: Applying properties {sample_variables=ulp_buffer_fill,ulp_lag_time,ulp_play_time,ulp_lag_ratio,ulp_dwn_time,ulp_hits,ulp_avg_chunk_time,ulp_avg_manifest_time}
<br>2020-06-11 15:54:01,795 INFO o.a.j.e.RemoteJMeterEngineImpl: Running test
<br>2020-06-11 15:54:01,797 INFO o.a.j.e.StandardJMeterEngine: Running the test!
<br>2020-06-11 15:54:01,797 INFO o.a.j.s.SampleEvent: List of sample_variables: [ulp_buffer_fill, ulp_lag_time, ulp_play_time, ulp_lag_ratio, ulp_dwn_time, ulp_hits, ulp_avg_chunk_time, ulp_avg_manifest_time]
<br>2020-06-11 15:54:22,801 ERROR o.a.j.s.RemoteListenerWrapper: testStarted(host) on 10.75.225.188
java.rmi.ConnectException: <b>Connection refused to host: 10.0.75.1; nested exception is:
java.net.ConnectException: Connection timed out: connect </b>
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source) ~[?:1.8.0_231]
at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source) ~[?:1.8.0_231]
at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source) ~[?:1.8.0_231]
at sun.rmi.server.UnicastRef.invoke(Unknown Source) ~[?:1.8.0_231]
at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(Unknown Source) ~[?:1.8.0_231]
at java.rmi.server.RemoteObjectInvocationHandler.invoke(Unknown Source) ~[?:1.8.0_231]
at com.sun.proxy.$Proxy20.testStarted(Unknown Source) ~[?:?]
at org.apache.jmeter.samplers.RemoteListenerWrapper.testStarted(RemoteListenerWrapper.java:79) [ApacheJMeter_core.jar:4.0 r1823414]
at org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfStart(StandardJMeterEngine.java:217) [ApacheJMeter_core.jar:4.0 r1823414]
at org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:384) [ApacheJMeter_core.jar:4.0 r1823414]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_231]
Caused by: java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method) ~[?:1.8.0_231]
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) ~[?:1.8.0_231]
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) ~[?:1.8.0_231]
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) ~[?:1.8.0_231]
at java.net.AbstractPlainSocketImpl.connect(Unknown Source) ~[?:1.8.0_231]
at java.net.PlainSocketImpl.connect(Unknown Source) ~[?:1.8.0_231]
at java.net.SocksSocketImpl.connect(Unknown Source) ~[?:1.8.0_231]
at java.net.Socket.connect(Unknown Source) ~[?:1.8.0_231]
at java.net.Socket.connect(Unknown Source) ~[?:1.8.0_231]
at java.net.Socket.<init>(Unknown Source) ~[?:1.8.0_231]
at java.net.Socket.<init>(Unknown Source) ~[?:1.8.0_231]
at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(Unknown Source) ~[?:1.8.0_231]
at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(Unknown Source) ~[?:1.8.0_231]
... 11 more
FYI: this machine has docker running on it and 10.0.75.1 is associated with it
You need to EXPOSE port 1099 (or whatever port you're using as the server_port) in your Dockerfile (or use host network driver) and in the firewall of your 10.75.225.188 machine, this is the minimum requirement for JMeter master could establish the connectivity with the slave machine.
More information: Remote hosts and RMI configuration
You can also refer to JMeter Distributed Testing with Docker article, it has some sample networking configuration you might be willing to apply to your system
I'm running my Master Jmeter in my local laptop and created Slave in AWS EC2 Windows instance. I have set up the IP address of the EC2 in my master Jmeter properties file.
I also made sure that both the master and slave are having the same JMeter Version.
Now when i connect slave through gui or non gui mode i'm getting the below error.
Please help me resolve this.
14:52:23,294 ERROR o.a.j.g.a.ActionRouter: Error processing org.apache.jmeter.gui.action.RemoteStart#5b22b970
java.lang.RuntimeException: Following remote engines could not be configured:[172.31.3.238]
at org.apache.jmeter.engine.DistributedRunner.init(DistributedRunner.java:112) ~[ApacheJMeter_core.jar:4.0 r1823414]
at org.apache.jmeter.gui.action.RemoteStart.doAction(RemoteStart.java:80) ~[ApacheJMeter_core.jar:4.0 r1823414]
at org.apache.jmeter.gui.action.ActionRouter.performAction(ActionRouter.java:88) ~[ApacheJMeter_core.jar:4.0 r1823414]
at org.apache.jmeter.gui.action.ActionRouter.lambda$actionPerformed$0(ActionRouter.java:70) ~[ApacheJMeter_core.jar:4.0 r1823414]
at java.awt.event.InvocationEvent.dispatch(Unknown Source) [?:1.8.0_171]
at java.awt.EventQueue.dispatchEventImpl(Unknown Source) [?:1.8.0_171]
at java.awt.EventQueue.access$500(Unknown Source) [?:1.8.0_171]
at java.awt.EventQueue$3.run(Unknown Source) [?:1.8.0_171]
at java.awt.EventQueue$3.run(Unknown Source) [?:1.8.0_171]
at java.security.AccessController.doPrivileged(Native Method) [?:1.8.0_171]
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) [?:1.8.0_171]
at java.awt.EventQueue.dispatchEvent(Unknown Source) [?:1.8.0_171]
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) [?:1.8.0_171]
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) [?:1.8.0_171]
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) [?:1.8.0_171]
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) [?:1.8.0_171]
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) [?:1.8.0_171]
at java.awt.EventDispatchThread.run(Unknown Source) [?:1.8.0_171]
Looking into 172.31.3.238 address it seems you are trying to connect the private address of your AWS instance and you should be using the Public IP instead.
Also make sure that the relevant port 1099 by default is exposed via AWS Security Groups and your Windows firewall.
Also consider moving your master instance to AWS as well, otherwise you might get huge bills for the traffic which is free between AWS instances in the same region. See How to Perform Distributed Testing in JMeter for more information on setting up the connectivity between master and slaves.
When u create master/Slave relationship it is preferred to have both the machines in the same vlan so that there shouldn't be any communication issue, try to have them in same vlan and the check it..!!
I download latest JMeter 4,
As part of Remote Testing
To run JMeter in remote node, start the JMeter server component on all machines you wish to run on by running the JMETER_HOME/bin/jmeter-server (unix) or JMETER_HOME/bin/jmeter-server.bat (windows) script.
I try to execute jmeter-server.bat in windows 7
and got the following error:
Server failed to start: java.rmi.server.ExportException: Listen failed on port:
0; nested exception is:
java.io.FileNotFoundException: rmi_keystore.jks (The system cannot find
the file specified)
An error occurred: Listen failed on port: 0; nested exception is:
java.io.FileNotFoundException: rmi_keystore.jks (The system cannot find
the file specified)
errorlevel=1
It seems that a file rmi_keystore.jks is missing. (I can't find it in JMeter folders)
In JMeter 3.3 jmeter-server.bat is working.
EDIT 1
after I execute create-rmi-keystore.bat it created rmi_keystore.jks, but I get other error:
Server failed to start: java.rmi.server.ExportException: Listen failed on port:
0; nested exception is:
java.io.IOException: java.security.UnrecoverableKeyException: Cannot rec
over key
An error occurred: Listen failed on port: 0; nested exception is:
java.io.IOException: java.security.UnrecoverableKeyException: Cannot rec
over key
errorlevel=1
error from log:
2018-02-11 12:09:13,916 ERROR o.a.j.e.DistributedRunner: Failed to create engine at 127.0.0.1
java.rmi.ConnectIOException: Exception creating connection to: 127.0.0.1; nested exception is:
java.io.IOException: java.security.UnrecoverableKeyException: Cannot recover key
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source) ~[?:1.8.0_25]
at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source) ~[?:1.8.0_25]
at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source) ~[?:1.8.0_25]
at sun.rmi.server.UnicastRef.newCall(Unknown Source) ~[?:1.8.0_25]
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source) ~[?:1.8.0_25]
at org.apache.jmeter.engine.ClientJMeterEngine.getEngine(ClientJMeterEngine.java:70) ~[ApacheJMeter_core.jar:4.0 r1823414]
at org.apache.jmeter.engine.ClientJMeterEngine.<init>(ClientJMeterEngine.java:83) ~[ApacheJMeter_core.jar:4.0 r1823414]
at org.apache.jmeter.engine.DistributedRunner.createEngine(DistributedRunner.java:237) ~[ApacheJMeter_core.jar:4.0 r1823414]
at org.apache.jmeter.engine.DistributedRunner.getClientEngine(DistributedRunner.java:213) [ApacheJMeter_core.jar:4.0 r1823414]
at org.apache.jmeter.engine.DistributedRunner.init(DistributedRunner.java:93) [ApacheJMeter_core.jar:4.0 r1823414]
at org.apache.jmeter.gui.action.RemoteStart.doAction(RemoteStart.java:80) [ApacheJMeter_core.jar:4.0 r1823414]
at org.apache.jmeter.gui.action.ActionRouter.performAction(ActionRouter.java:88) [ApacheJMeter_core.jar:4.0 r1823414]
at org.apache.jmeter.gui.action.ActionRouter.lambda$actionPerformed$0(ActionRouter.java:70) [ApacheJMeter_core.jar:4.0 r1823414]
at org.apache.jmeter.gui.action.ActionRouter$$Lambda$63/2068100669.run(Unknown Source) [ApacheJMeter_core.jar:4.0 r1823414]
at java.awt.event.InvocationEvent.dispatch(Unknown Source) [?:1.8.0_25]
at java.awt.EventQueue.dispatchEventImpl(Unknown Source) [?:1.8.0_25]
at java.awt.EventQueue.access$400(Unknown Source) [?:1.8.0_25]
at java.awt.EventQueue$3.run(Unknown Source) [?:1.8.0_25]
at java.awt.EventQueue$3.run(Unknown Source) [?:1.8.0_25]
at java.security.AccessController.doPrivileged(Native Method) [?:1.8.0_25]
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) [?:1.8.0_25]
at java.awt.EventQueue.dispatchEvent(Unknown Source) [?:1.8.0_25]
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) [?:1.8.0_25]
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) [?:1.8.0_25]
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) [?:1.8.0_25]
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) [?:1.8.0_25]
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) [?:1.8.0_25]
at java.awt.EventDispatchThread.run(Unknown Source) [?:1.8.0_25]
Caused by: java.io.IOException: java.security.UnrecoverableKeyException: Cannot recover key
at org.apache.jmeter.rmi.SSLRMIClientSocketFactory.createSocket(SSLRMIClientSocketFactory.java:110) ~[ApacheJMeter_core.jar:4.0 r1823414]
... 28 more
Caused by: java.security.UnrecoverableKeyException: Cannot recover key
at sun.security.provider.KeyProtector.recover(Unknown Source) ~[?:1.8.0_25]
at sun.security.provider.JavaKeyStore.engineGetKey(Unknown Source) ~[?:1.8.0_25]
at sun.security.provider.JavaKeyStore$JKS.engineGetKey(Unknown Source) ~[?:1.8.0_25]
at java.security.KeyStore.getKey(Unknown Source) ~[?:1.8.0_25]
at sun.security.ssl.SunX509KeyManagerImpl.<init>(Unknown Source) ~[?:1.8.0_25]
at sun.security.ssl.KeyManagerFactoryImpl$SunX509.engineInit(Unknown Source) ~[?:1.8.0_25]
at javax.net.ssl.KeyManagerFactory.init(Unknown Source) ~[?:1.8.0_25]
at org.apache.jmeter.rmi.SSLRMIClientSocketFactory.createSocket(SSLRMIClientSocketFactory.java:103) ~[ApacheJMeter_core.jar:4.0 r1823414]
... 28 more
2018-02-11 12:09:24,368 INFO o.a.j.e.DistributedRunner: Failed to configure 127.0.0.1
2018-02-11 12:09:24,369 INFO o.a.j.e.DistributedRunner: Stopping remote engines
2018-02-11 12:09:24,370 INFO o.a.j.e.DistributedRunner: Remote engines have been stopped
2018-02-11 12:09:24,370 ERROR o.a.j.g.a.ActionRouter: Error processing org.apache.jmeter.gui.action.RemoteStart#3249a1ce
java.lang.RuntimeException: Following remote engines could not be configured:[127.0.0.1]
at org.apache.jmeter.engine.DistributedRunner.init(DistributedRunner.java:112) ~[ApacheJMeter_core.jar:4.0 r1823414]
at org.apache.jmeter.gui.action.RemoteStart.doAction(RemoteStart.java:80) ~[ApacheJMeter_core.jar:4.0 r1823414]
at org.apache.jmeter.gui.action.ActionRouter.performAction(ActionRouter.java:88) [ApacheJMeter_core.jar:4.0 r1823414]
at org.apache.jmeter.gui.action.ActionRouter.lambda$actionPerformed$0(ActionRouter.java:70) [ApacheJMeter_core.jar:4.0 r1823414]
at org.apache.jmeter.gui.action.ActionRouter$$Lambda$63/2068100669.run(Unknown Source) [ApacheJMeter_core.jar:4.0 r1823414]
at java.awt.event.InvocationEvent.dispatch(Unknown Source) [?:1.8.0_25]
at java.awt.EventQueue.dispatchEventImpl(Unknown Source) [?:1.8.0_25]
at java.awt.EventQueue.access$400(Unknown Source) [?:1.8.0_25]
at java.awt.EventQueue$3.run(Unknown Source) [?:1.8.0_25]
at java.awt.EventQueue$3.run(Unknown Source) [?:1.8.0_25]
at java.security.AccessController.doPrivileged(Native Method) [?:1.8.0_25]
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) [?:1.8.0_25]
at java.awt.EventQueue.dispatchEvent(Unknown Source) [?:1.8.0_25]
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) [?:1.8.0_25]
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) [?:1.8.0_25]
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) [?:1.8.0_25]
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) [?:1.8.0_25]
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) [?:1.8.0_25]
at java.awt.EventDispatchThread.run(Unknown Source) [?:1.8.0_25]
EDIT 2
I tried to change server.rmi.ssl.keystore.password to password I wrote but got a different error
Server failed to start: java.rmi.server.ExportException: Listen failed on port:
0; nested exception is:
java.io.IOException: Keystore was tampered with, or password was incorre
ct
An error occurred: Listen failed on port: 0; nested exception is:
java.io.IOException: Keystore was tampered with, or password was incorre
ct
EDIT 3
I tried to set the server port manually SET SERVER_PORT=1099 according to reference but still trying to listen through port 0
On Windows this can be done by:
SET SERVER_PORT=
To solve issue, you need to follow:
http://jmeter.apache.org/usermanual/remote-test.html#setup_ssl
The problem was the answer to first question when executing create-rmi-keystore
What is your first and last name?
I should have answered rmi as it the default value in JMeter's property server.rmi.ssl.keystore.alias
Also (difference from JMeter 3.3) I needed to change JMeter's property remote_hosts so that it uses my host name (change from 127.0.0.1)
This is related to :
https://bz.apache.org/bugzilla/show_bug.cgi?id=62039
Had the same problem.
To solve it you have several options:
Set rmi-keystore password to changeit, as described in jmeter.properties:
Password of Trust store
server.rmi.ssl.truststore.password=changeit
If using custom password - add it to user.properties on jmeter-server machine
Disable SSL by passing -Jserver.rmi.ssl.disable=true
What worked for me (with JMeter 5.0) was an dedicated jmeter-server.properties file with this configurations:
# Type of keystore : JKS
server.rmi.ssl.keystore.type=JKS
#
# Keystore file that contains private key
server.rmi.ssl.keystore.file=rmi_keystore.jks
#
# Password of Keystore
server.rmi.ssl.keystore.password=changeit
#
# Key alias
server.rmi.ssl.keystore.alias=rmi
#
# Type of truststore : JKS
server.rmi.ssl.truststore.type=JKS
#
# Keystore file that contains certificate
server.rmi.ssl.truststore.file=rmi_keystore.jks
#
# Password of Trust store
server.rmi.ssl.truststore.password=changeit
I created a rmi_keystore.jks file with the create-rmi-keystore command in the JMeter bin folder. Then I started my server with jmeter-server -Gjmeter-server.properties. Also check then the log from the server to get the endpoint to connect your client with the server as user7294900 suggested.
Created remote object: UnicastServerRef2 [liveRef: [endpoint:[<this is your server>
I faced all the above problems, until i found the solution to it, which is this:
The error java.security.UnrecoverableKeyException: Cannot recover key occurs when the keystore and keyEntry passwords are different.
To resolve this issue, you must remove all traces of the past certificate and request file.
You must generate a new keystore, keyEntry and CSR and specify the same password for the keystore and the keyEntry.
There are two batch files in your bin folder. Run the "create-rmi-keystore" file first and then "jmeter"
I am trying to set up an aws server for performance testing of APIs where the logs will come. I installed Java and Jmeter on that server.
The application server is different i.e. test.server.com:8080
The aws server is different with different ip address.
The Jmeter GUI is installed on my laptop.
In my system in the apache Jmeter --> bin folder --> jmeter.properties, I have defined remote_hosts as ip address of the aws server where the logs should appear.
And server.rmi.localport=50000
I have not made any changes in the jmeter.properties file that is installed on aws server where the logs of performance testing should come.
When I run the Jmeter UI from my system and run --> remote start -> select the ip address of the aws server, it gives me connection time out exception.
In Logs am getting :
java.net.ConnectException: Connection timed out: connect
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source)
at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source)
at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source)
at sun.rmi.server.UnicastRef.newCall(Unknown Source)
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at java.rmi.Naming.lookup(Unknown Source)
at org.apache.jmeter.engine.ClientJMeterEngine.getEngine(ClientJMeterEngine.java:54)
at org.apache.jmeter.engine.ClientJMeterEngine.<init>(ClientJMeterEngine.java:67)
at org.apache.jmeter.engine.DistributedRunner.createEngine(DistributedRunner.java:237)
at org.apache.jmeter.engine.DistributedRunner.getClientEngine(DistributedRunner.java:213)
at org.apache.jmeter.engine.DistributedRunner.init(DistributedRunner.java:93)
at org.apache.jmeter.gui.action.RemoteStart.doAction(RemoteStart.java:77)
at org.apache.jmeter.gui.action.ActionRouter.performAction(ActionRouter.java:80)
at org.apache.jmeter.gui.action.ActionRouter.access$000(ActionRouter.java:40)
at org.apache.jmeter.gui.action.ActionRouter$1.run(ActionRouter.java:62)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(Unknown Source)
at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(Unknown Source)
There is some configuration which has not been correctly done I believe. How can I check and what all changes should I make to run the test scripts.
Looks like network/firewall issue. Master & slaves should be in same subnet. If possible, you could create another instance in AWS and make it as a master. Ensure that jmeter master, slaves are able to talk to each other.
You might be behind the firewall. You can access AWS. But AWS can not access your machine/or the application behind the firewall.
Check if you are able to telnet through the specific port.
check AWS inbound/outbound rules.
If you use AWS, I would suggest you to use dokcer + rancherOS - It makes my life much easier in jmeter infrastructure setup.
http://www.testautomationguru.com/jmeter-distributed-load-testing-using-docker-rancheros-in-cloud/