http://jira.hyperic.com/browse/HHQ-3880
When monitoring 'Tomcat x.x Connector' services (from the servlet plugin) if the monitored server does not respond the ScheduleThread can become stuck, causing other metrics to not be collected.
This is yet another variation of HHQ-1695
Thread dump from the agent:
INFO | jvm 1 | 2010/04/06 15:34:02 | "ScheduleThread" daemon prio=1 tid=0x00002aaaae3a42d0 nid=0x5249 runnable [0x0000000041668000..0x0000000041668ba0]
INFO | jvm 1 | 2010/04/06 15:34:02 | at java.net.SocketInputStream.socketRead0(Native Method)
INFO | jvm 1 | 2010/04/06 15:34:02 | at java.net.SocketInputStream.read(Unknown Source)
INFO | jvm 1 | 2010/04/06 15:34:02 | at java.net.SocketInputStream.read(Unknown Source)
INFO | jvm 1 | 2010/04/06 15:34:02 | at org.hyperic.hq.product.servlet.client.JMXProtocolAjp.get(JMXProtocolAjp.java:180)
INFO | jvm 1 | 2010/04/06 15:34:02 | at org.hyperic.hq.product.servlet.client.JMXProtocolAjp.openStream(JMXProtocolAjp.java:264)
INFO | jvm 1 | 2010/04/06 15:34:02 | at org.hyperic.hq.product.servlet.client.JMXRemote.getURLAvailability(JMXRemote.java:309)
INFO | jvm 1 | 2010/04/06 15:34:02 | at org.hyperic.hq.product.servlet.client.JMXRemote.getAvailability(JMXRemote.java:370)
INFO | jvm 1 | 2010/04/06 15:34:02 | at org.hyperic.hq.product.servlet.client.JMXRemote.getRemoteMBeanValue(JMXRemote.java:388)
INFO | jvm 1 | 2010/04/06 15:34:02 | at org.hyperic.hq.plugin.servlet.ServletMeasurementPlugin.getRemoteValue(ServletMeasurementPlugin.java:167)
INFO | jvm 1 | 2010/04/06 15:34:02 | at org.hyperic.hq.plugin.servlet.ServletMeasurementPlugin.getValue(ServletMeasurementPlugin.java:206)
INFO | jvm 1 | 2010/04/06 15:34:02 | at org.hyperic.hq.product.MeasurementPluginManager.getPluginValue(MeasurementPluginManager.java:176)
INFO | jvm 1 | 2010/04/06 15:34:02 | at org.hyperic.hq.product.MeasurementPluginManager.getValue(MeasurementPluginManager.java:274)
INFO | jvm 1 | 2010/04/06 15:34:02 | at org.hyperic.hq.measurement.agent.server.ScheduleThread.getValue(ScheduleThread.java:298)
INFO | jvm 1 | 2010/04/06 15:34:02 | at org.hyperic.hq.measurement.agent.server.ScheduleThread.collect(ScheduleThread.java:387)
INFO | jvm 1 | 2010/04/06 15:34:02 | at org.hyperic.hq.measurement.agent.server.ScheduleThread.collect(ScheduleThread.java:344)
INFO | jvm 1 | 2010/04/06 15:34:02 | at org.hyperic.hq.measurement.agent.server.ScheduleThread.collect(ScheduleThread.java:490)
INFO | jvm 1 | 2010/04/06 15:34:02 | - locked <0x00002b07507f1db8> (a java.util.Collections$SynchronizedMap)
INFO | jvm 1 | 2010/04/06 15:34:02 | at org.hyperic.hq.measurement.agent.server.ScheduleThread.run(ScheduleThread.java:512)
INFO | jvm 1 | 2010/04/06 15:34:02 | at java.lang.Thread.run(Unknown Source)
It would seem to me that setting socket.setSoTimeout() in JMXProtocolAJP.getSocket() would fix this.
Anonymous