Failed to get JMX Connector

1,394 views
Skip to first unread message

Abdul Moid

unread,
May 17, 2012, 9:17:28 AM5/17/12
to jmeter-...@googlegroups.com
Hi,

I have 0.5.2 version running. I am connecting to my Test Server Box where Server agent is running at port 4444.

I have added the JMX metric and i am looking to collect gc-time metric, But unfortunately i am getting Failed to get JMX connector exception.

192.168.16.223    4444    CPU    combined
192.168.16.223    4444    JMX    gc-time

I am getting CPU combined metrics but i am not getting gc-time JMX metric.

I also tried to change the port to 1099, but when i change to 1099 test plan never started.

Following are the logs when i am connecting via port 4444:
===========================================

INFO    2012-05-17 14:05:56.493 [kg.apc.p] (): Yep, we received the 'test' command
INFO    2012-05-17 14:05:56.500 [kg.apc.p] (): Starting measures: memory:usedperc    jmx:gc-time    cpu:combined    swap:used    network i/o:bytesrecv    disks i/o:queue
ERROR   2012-05-17 14:05:56.502 [kg.apc.p] (): Failed to get JMX Connector
java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: localhost; nested exception is:
    java.net.ConnectException: Connection refused]
    at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:338)
    at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:248)
    at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:207)
    at kg.apc.perfmon.metrics.jmx.JMXConnectorHelper.getJMXConnector(JMXConnectorHelper.java:38)
    at kg.apc.perfmon.metrics.jmx.JMXConnectorHelper.getServerConnection(JMXConnectorHelper.java:25)
    at kg.apc.perfmon.metrics.JMXMetric.<init>(JMXMetric.java:38)
    at kg.apc.perfmon.metrics.AbstractPerfMonMetric.createMetric(AbstractPerfMonMetric.java:52)
    at kg.apc.perfmon.PerfMonMetricGetter.setUpMetrics(PerfMonMetricGetter.java:138)
    at kg.apc.perfmon.PerfMonMetricGetter.processCommand(PerfMonMetricGetter.java:63)
    at kg.apc.perfmon.PerfMonMetricGetter.processNextCommand(PerfMonMetricGetter.java:101)
    at kg.apc.perfmon.PerfMonWorker.read(PerfMonWorker.java:203)
    at kg.apc.perfmon.PerfMonWorker.processCommands(PerfMonWorker.java:97)
    at kg.apc.perfmon.AgentTool.processParams(AgentTool.java:72)
    at kg.apc.cmdtools.PluginsCMD.processParams(PluginsCMD.java:63)
    at kg.apc.cmdtools.PluginsCMD.processParams(PluginsCMD.java:23)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at kg.apc.cmd.UniversalRunner.main(UniversalRunner.java:150)
Caused by: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: localhost; nested exception is:
    java.net.ConnectException: Connection refused]
    at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:101)
    at com.sun.jndi.toolkit.url.GenericURLContext.lookup(GenericURLContext.java:185)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at javax.management.remote.rmi.RMIConnector.findRMIServerJNDI(RMIConnector.java:1886)
    at javax.management.remote.rmi.RMIConnector.findRMIServer(RMIConnector.java:1856)
    at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:255)
    ... 19 more
Caused by: java.rmi.ConnectException: Connection refused to host: localhost; nested exception is:
    java.net.ConnectException: Connection refused
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:601)
    at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:198)
    at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:184)
    at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:322)
    at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
    at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:97)
    ... 24 more
Caused by: java.net.ConnectException: Connection refused
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
    at java.net.Socket.connect(Socket.java:529)
    at java.net.Socket.connect(Socket.java:478)
    at java.net.Socket.<init>(Socket.java:375)
    at java.net.Socket.<init>(Socket.java:189)
    at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:22)
    at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:128)
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:595)
    ... 29 more
ERROR   2012-05-17 14:05:56.503 [kg.apc.p] (): Invalid metric specified: jmx
java.lang.RuntimeException: Failed to get JMX Connector
    at kg.apc.perfmon.metrics.jmx.JMXConnectorHelper.getServerConnection(JMXConnectorHelper.java:29)
    at kg.apc.perfmon.metrics.JMXMetric.<init>(JMXMetric.java:38)
    at kg.apc.perfmon.metrics.AbstractPerfMonMetric.createMetric(AbstractPerfMonMetric.java:52)
    at kg.apc.perfmon.PerfMonMetricGetter.setUpMetrics(PerfMonMetricGetter.java:138)
    at kg.apc.perfmon.PerfMonMetricGetter.processCommand(PerfMonMetricGetter.java:63)
    at kg.apc.perfmon.PerfMonMetricGetter.processNextCommand(PerfMonMetricGetter.java:101)
    at kg.apc.perfmon.PerfMonWorker.read(PerfMonWorker.java:203)
    at kg.apc.perfmon.PerfMonWorker.processCommands(PerfMonWorker.java:97)
    at kg.apc.perfmon.AgentTool.processParams(AgentTool.java:72)
    at kg.apc.cmdtools.PluginsCMD.processParams(PluginsCMD.java:63)
    at kg.apc.cmdtools.PluginsCMD.processParams(PluginsCMD.java:23)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at kg.apc.cmd.UniversalRunner.main(UniversalRunner.java:150)
Caused by: java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: localhost; nested exception is:
    java.net.ConnectException: Connection refused]
    at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:338)
    at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:248)
    at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:207)
    at kg.apc.perfmon.metrics.jmx.JMXConnectorHelper.getJMXConnector(JMXConnectorHelper.java:38)
    at kg.apc.perfmon.metrics.jmx.JMXConnectorHelper.getServerConnection(JMXConnectorHelper.java:25)
    ... 15 more
Caused by: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: localhost; nested exception is:
    java.net.ConnectException: Connection refused]
    at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:101)
    at com.sun.jndi.toolkit.url.GenericURLContext.lookup(GenericURLContext.java:185)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at javax.management.remote.rmi.RMIConnector.findRMIServerJNDI(RMIConnector.java:1886)
    at javax.management.remote.rmi.RMIConnector.findRMIServer(RMIConnector.java:1856)
    at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:255)
    ... 19 more
Caused by: java.rmi.ConnectException: Connection refused to host: localhost; nested exception is:
    java.net.ConnectException: Connection refused
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:601)
    at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:198)
    at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:184)
    at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:322)
    at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
    at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:97)
    ... 24 more
Caused by: java.net.ConnectException: Connection refused
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
    at java.net.Socket.connect(Socket.java:529)
    at java.net.Socket.connect(Socket.java:478)
    at java.net.Socket.<init>(Socket.java:375)
    at java.net.Socket.<init>(Socket.java:189)
    at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:22)
    at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:128)
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:595)
    ... 29 more

Following are my JMeter logs when i am using port 1099.
=========================================


2012/05/17 14:15:54 INFO  - jmeter.gui.action.Load: Loading file: /home/abdul/Desktop/lbrokerperftest1.jmx
2012/05/17 14:15:54 INFO  - jmeter.services.FileServer: Set new base='/home/abdul/Desktop'
2012/05/17 14:15:54 INFO  - jmeter.services.FileServer: Set new base='/home/abdul/Desktop'
2012/05/17 14:15:58 INFO  - jmeter.engine.StandardJMeterEngine: Running the test!
2012/05/17 14:15:58 INFO  - kg.apc.perfmon.client.TransportFactory: Can't connect UDP transport for host: /192.168.16.223:1099 java.io.IOException: Agent is unreachable via UDP
    at kg.apc.perfmon.client.TransportFactory.getTransport(TransportFactory.java:34)
    at kg.apc.jmeter.perfmon.PerfMonCollector.getConnector(PerfMonCollector.java:203)
    at kg.apc.jmeter.perfmon.PerfMonCollector.initiateConnector(PerfMonCollector.java:185)
    at kg.apc.jmeter.perfmon.PerfMonCollector.initiateConnectors(PerfMonCollector.java:149)
    at kg.apc.jmeter.perfmon.PerfMonCollector.testStarted(PerfMonCollector.java:107)
    at org.apache.jmeter.reporters.ResultCollector.testStarted(ResultCollector.java:280)
    at kg.apc.jmeter.vizualizers.CorrectedResultCollector.testStarted(CorrectedResultCollector.java:25)
    at org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfStart(StandardJMeterEngine.java:224)
    at org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:349)
    at java.lang.Thread.run(Thread.java:722)

2012/05/17 14:15:59 INFO  - kg.apc.perfmon.client.TransportFactory: Can't connect TCP transport for host: /192.168.16.223:1099 java.io.IOException: Agent is unreachable via TCP
    at kg.apc.perfmon.client.TransportFactory.getTransport(TransportFactory.java:43)
    at kg.apc.jmeter.perfmon.PerfMonCollector.getConnector(PerfMonCollector.java:203)
    at kg.apc.jmeter.perfmon.PerfMonCollector.initiateConnector(PerfMonCollector.java:185)
    at kg.apc.jmeter.perfmon.PerfMonCollector.initiateConnectors(PerfMonCollector.java:149)
    at kg.apc.jmeter.perfmon.PerfMonCollector.testStarted(PerfMonCollector.java:107)
    at org.apache.jmeter.reporters.ResultCollector.testStarted(ResultCollector.java:280)
    at kg.apc.jmeter.vizualizers.CorrectedResultCollector.testStarted(CorrectedResultCollector.java:25)
    at org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfStart(StandardJMeterEngine.java:224)
    at org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:349)
    at java.lang.Thread.run(Thread.java:722)


Please do let me know what i am doing wrong here Pleaseeeee

--
Thanks and Regards,
Moid

Andrey Pohilko

unread,
May 17, 2012, 10:26:47 AM5/17/12
to jmeter-...@googlegroups.com
You should know that serverAgent port is different from JMX port. 
Point 1: your Java application must be started with special options to open its JMX port.
Point 2: `gc-time` may be not enough to setup access to JMX port from serveragent. See help for possible configuration options.

The scheme is like this: computer A with JMeter, server B is target, server C is server with JMX-enabled application running. Yes, for sure, hosts B and C in most cases are the same. But serverAgent needs to be sure and requires proper configuration.

Hope this helps.

четверг, 17 мая 2012 г., 17:17:28 UTC+4 пользователь Abdul Moid написал:

Abdul Moid

unread,
May 17, 2012, 11:27:02 AM5/17/12
to jmeter-...@googlegroups.com
Thanks,

Problem is now solved i was specifying the metric details wrongly.

192.168.16.223    4444    JMX    url=192.168.16.223\:1099:gc-time

now i am getting all the JMX related metrics.

One quick question, is it possible i can monitor the JMX queues ?
--
Thanks and Regards,
Abdul Moid
Reply all
Reply to author
Forward
Message has been deleted
Message has been deleted
0 new messages