【发布时间】:2009-02-19 18:35:50
【问题描述】:
我们的应用程序连接到几个 jmx 代理(大约 50 个)以频繁地轮询 jmx 数据。一段时间后(大约一天),应用程序变得无响应。我们查看了线程转储,发现有大量线程卡在 ClientNotifForwarder 上。
例如:
"ClientNotifForwarder-50" daemon prio=3 tid=0x09aa3800 nid=0x330 runnable [0xd3a90000..0xd3a90c70]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
- locked <0xe2538af0> (a java.io.BufferedInputStream)
at java.io.DataInputStream.readByte(DataInputStream.java:248)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:195)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:142)
at com.sun.jmx.remote.internal.PRef.invoke(Unknown Source)
at javax.management.remote.rmi.RMIConnectionImpl_Stub.fetchNotifications(Unknown Source)
at javax.management.remote.rmi.RMIConnector$RMINotifClient.fetchNotifs(RMIConnector.java:1291)
at com.sun.jmx.remote.internal.ClientNotifForwarder$NotifFetcher.fetchNotifs(ClientNotifForwarder.java:503)
at com.sun.jmx.remote.internal.ClientNotifForwarder$NotifFetcher.run(ClientNotifForwarder.java:395)
at com.sun.jmx.remote.internal.ClientNotifForwarder$LinearExecutor$1.run(ClientNotifForwarder.java:83)
感谢您在确定根本原因方面的任何帮助...
谢谢, 拉贾
【问题讨论】:
-
我们看到了类似的问题。我们的堆栈跟踪有点不同,但我认为根本原因可能是相同的。
-
可能与这个标记为“10-Fix Delivered”的错误有关:bugs.sun.com/bugdatabase/view_bug.do?bug_id=6199899
标签: java multithreading jmx