Java JMX线程卡在ClientNotifForwarder上
我们的应用程序连接到几个jmx代理(大约50个),以频繁地轮询jmx数据。一段时间后(大约一天),应用程序变得不负责任。我们查看了线程转储,发现大量线程卡在ClientNotifForwarder上 例如:Java JMX线程卡在ClientNotifForwarder上,java,multithreading,jmx,Java,Multithreading,Jmx,我们的应用程序连接到几个jmx代理(大约50个),以频繁地轮询jmx数据。一段时间后(大约一天),应用程序变得不负责任。我们查看了线程转储,发现大量线程卡在ClientNotifForwarder上 例如: “ClientNotifForwarder-50”守护程序prio=3 tid=0x09aa3800 nid=0x330可运行[0xd3a90000..0xd3a90c70] java.lang.Thread.State:可运行 位于java.net.SocketInputStream.so
“ClientNotifForwarder-50”守护程序prio=3 tid=0x09aa3800 nid=0x330可运行[0xd3a90000..0xd3a90c70]
java.lang.Thread.State:可运行
位于java.net.SocketInputStream.socketRead0(本机方法)
位于java.net.SocketInputStream.read(SocketInputStream.java:129)
在java.io.BufferedInputStream.fill处(BufferedInputStream.java:218)
在java.io.BufferedInputStream.read处(BufferedInputStream.java:237)
-锁定(java.io.BufferedInputStream)
位于java.io.DataInputStream.readByte(DataInputStream.java:248)
位于sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:195)
位于sun.rmi.server.UnicastRef.invoke(UnicastRef.java:142)
位于com.sun.jmx.remote.internal.PRef.invoke(未知源)
位于javax.management.remote.rmi.RMIConnectionImpl_Stub.fetchNotifications(未知源)
位于javax.management.remote.rmi.RMIConnector$RMINotifClient.fetchNotifs(RMIConnector.java:1291)
在com.sun.jmx.remote.internal.ClientNotifForwarder$NotifFetcher.fetchNotifs(ClientNotifForwarder.java:503)
在com.sun.jmx.remote.internal.ClientNotifForwarder$NotifFetcher.run(ClientNotifForwarder.java:395)
在com.sun.jmx.remote.internal.ClientNotifForwarder$LinearExecutor$1.run(ClientNotifForwarder.java:83)
感谢您在确定根本原因方面的任何帮助
谢谢,
Raja尝试从命令行设置连接和读取超时属性
sun.net.client.defaultConnectTimeout
sun.net.client.defaultReadTimeout
假设你有足够的再审机制。我们也看到了类似的问题。我们的堆栈跟踪有点不同,但我认为根本原因可能是相同的。可能与标记为“10修复已交付”的此错误有关:
sun.net.client.defaultConnectTimeout
sun.net.client.defaultReadTimeout