weblogic线程胖锁weblogic.socket.Muxer已达到BEA-002936最大线程约束群集消息传递
我的weblogic服务器10.3.6上刚刚出现了一些随机警报“” 在完整线程转储中,我有(活动状态) 264个线程使用此带胖锁的堆栈:weblogic线程胖锁weblogic.socket.Muxer已达到BEA-002936最大线程约束群集消息传递,weblogic,weblogic11g,Weblogic,Weblogic11g,我的weblogic服务器10.3.6上刚刚出现了一些随机警报“” 在完整线程转储中,我有(活动状态) 264个线程使用此带胖锁的堆栈: "[ACTIVE] ExecuteThread: '100' for queue: 'weblogic.kernel.Default (self-tuning)'": non-Java thread "[ACTIVE] ExecuteThread: '101' for queue: 'weblogic.kernel.Default (self-
"[ACTIVE] ExecuteThread: '100' for queue: 'weblogic.kernel.Default (self-tuning)'": non-Java thread
"[ACTIVE] ExecuteThread: '101' for queue: 'weblogic.kernel.Default (self-tuning)'": non-Java thread
"[ACTIVE] ExecuteThread: '102' for queue: 'weblogic.kernel.Default (self-tuning)'": non-Java thread
each ExecuteThread have the same thing:
"[ACTIVE] ExecuteThread: '110' for queue: 'weblogic.kernel.Default (self-tuning)'" id=842 idx=0x48 tid=28341 prio=5 alive, waiting, native_blocked, daemon
-- Waiting for notification on: weblogic/work/ExecuteThread@0xa03777f0[fat lock]
at jrockit/vm/Threads.waitForNotifySignal(JLjava/lang/Object;)Z(Native Method)
at jrockit/vm/Locks.wait(Locks.java:1973)[inlined]
at java/lang/Object.wait(Object.java:485)[inlined]
at weblogic/work/ExecuteThread.waitForRequest(ExecuteThread.java:205)[inlined]
at weblogic/work/ExecuteThread.run(ExecuteThread.java:233)[optimized]
^-- Lock released while waiting: weblogic/work/ExecuteThread@0xa03777f0[fat lock]
at jrockit/vm/RNI.c2java(JJJJJ)V(Native Method)
-- end of trace
"Thread-1" id=11 idx=0x4c tid=16134 prio=5 alive, sleeping, native_waiting, daemon
at java/lang/Thread.sleep(J)V(Native Method)
at com/singularity/util/org/apache/log4j/helpers/FileWatchdog.run(FileWatchdog.java:104)
at jrockit/vm/RNI.c2java(JJJJJ)V(Native Method)
-- end of trace
"[ACTIVE] ExecuteThread: '103' for queue: 'weblogic.kernel.Default (self-tuning)'" id=850 idx=0x50 tid=28350 prio=5 alive, waiting, native_blocked, daemon
-- Waiting for notification on: weblogic/work/ExecuteThread@0x9cf6ba30[fat lock]
at jrockit/vm/Threads.waitForNotifySignal(JLjava/lang/Object;)Z(Native Method)
at jrockit/vm/Locks.wait(Locks.java:1973)[inlined]
at java/lang/Object.wait(Object.java:485)[inlined]
at weblogic/work/ExecuteThread.waitForRequest(ExecuteThread.java:205)[inlined]
at weblogic/work/ExecuteThread.run(ExecuteThread.java:233)[optimized]
^-- Lock released while waiting: weblogic/work/ExecuteThread@0x9cf6ba30[fat lock]
at jrockit/vm/RNI.c2java(JJJJJ)V(Native Method)
-- end of trace
"[STANDBY] ExecuteThread: '105' for queue: 'weblogic.kernel.Default (self-tuning)'" id=852 idx=0x6c tid=28352 prio=5 alive, waiting, native_blocked, daemon
-- Waiting for notification on: weblogic/work/ExecuteThread@0xa02d3520[fat lock]
at jrockit/vm/Threads.waitForNotifySignal(JLjava/lang/Object;)Z(Native Method)
at jrockit/vm/Locks.wait(Locks.java:1973)[inlined]
at java/lang/Object.wait(Object.java:485)[inlined]
at weblogic/work/ExecuteThread.waitForRequest(ExecuteThread.java:205)[inlined]
at weblogic/work/ExecuteThread.run(ExecuteThread.java:233)[optimized]
^-- Lock released while waiting: weblogic/work/ExecuteThread@0xa02d3520[fat lock]
at jrockit/vm/RNI.c2java(JJJJJ)V(Native Method)
-- end of trace
其中有几个(7)处于待机状态,具有此带胖锁的完整堆栈:
"[ACTIVE] ExecuteThread: '100' for queue: 'weblogic.kernel.Default (self-tuning)'": non-Java thread
"[ACTIVE] ExecuteThread: '101' for queue: 'weblogic.kernel.Default (self-tuning)'": non-Java thread
"[ACTIVE] ExecuteThread: '102' for queue: 'weblogic.kernel.Default (self-tuning)'": non-Java thread
each ExecuteThread have the same thing:
"[ACTIVE] ExecuteThread: '110' for queue: 'weblogic.kernel.Default (self-tuning)'" id=842 idx=0x48 tid=28341 prio=5 alive, waiting, native_blocked, daemon
-- Waiting for notification on: weblogic/work/ExecuteThread@0xa03777f0[fat lock]
at jrockit/vm/Threads.waitForNotifySignal(JLjava/lang/Object;)Z(Native Method)
at jrockit/vm/Locks.wait(Locks.java:1973)[inlined]
at java/lang/Object.wait(Object.java:485)[inlined]
at weblogic/work/ExecuteThread.waitForRequest(ExecuteThread.java:205)[inlined]
at weblogic/work/ExecuteThread.run(ExecuteThread.java:233)[optimized]
^-- Lock released while waiting: weblogic/work/ExecuteThread@0xa03777f0[fat lock]
at jrockit/vm/RNI.c2java(JJJJJ)V(Native Method)
-- end of trace
"Thread-1" id=11 idx=0x4c tid=16134 prio=5 alive, sleeping, native_waiting, daemon
at java/lang/Thread.sleep(J)V(Native Method)
at com/singularity/util/org/apache/log4j/helpers/FileWatchdog.run(FileWatchdog.java:104)
at jrockit/vm/RNI.c2java(JJJJJ)V(Native Method)
-- end of trace
"[ACTIVE] ExecuteThread: '103' for queue: 'weblogic.kernel.Default (self-tuning)'" id=850 idx=0x50 tid=28350 prio=5 alive, waiting, native_blocked, daemon
-- Waiting for notification on: weblogic/work/ExecuteThread@0x9cf6ba30[fat lock]
at jrockit/vm/Threads.waitForNotifySignal(JLjava/lang/Object;)Z(Native Method)
at jrockit/vm/Locks.wait(Locks.java:1973)[inlined]
at java/lang/Object.wait(Object.java:485)[inlined]
at weblogic/work/ExecuteThread.waitForRequest(ExecuteThread.java:205)[inlined]
at weblogic/work/ExecuteThread.run(ExecuteThread.java:233)[optimized]
^-- Lock released while waiting: weblogic/work/ExecuteThread@0x9cf6ba30[fat lock]
at jrockit/vm/RNI.c2java(JJJJJ)V(Native Method)
-- end of trace
"[STANDBY] ExecuteThread: '105' for queue: 'weblogic.kernel.Default (self-tuning)'" id=852 idx=0x6c tid=28352 prio=5 alive, waiting, native_blocked, daemon
-- Waiting for notification on: weblogic/work/ExecuteThread@0xa02d3520[fat lock]
at jrockit/vm/Threads.waitForNotifySignal(JLjava/lang/Object;)Z(Native Method)
at jrockit/vm/Locks.wait(Locks.java:1973)[inlined]
at java/lang/Object.wait(Object.java:485)[inlined]
at weblogic/work/ExecuteThread.waitForRequest(ExecuteThread.java:205)[inlined]
at weblogic/work/ExecuteThread.run(ExecuteThread.java:233)[optimized]
^-- Lock released while waiting: weblogic/work/ExecuteThread@0xa02d3520[fat lock]
at jrockit/vm/RNI.c2java(JJJJJ)V(Native Method)
-- end of trace
其中一个线程在堆栈中处于“卡住”状态:
"[STUCK] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'": non-Java thread
at jrockit/vm/Threads.waitForNotifySignal(JLjava/lang/Object;)Z(Native Method)
at java/lang/Object.wait(J)V(Native Method)
at weblogic/rjvm/ResponseImpl.waitForData(ResponseImpl.java:90)
at weblogic/rjvm/ResponseImpl.retrieveThreadLocalContext(ResponseImpl.java:153)
at weblogic/messaging/dispatcher/DispatcherProxy.unmarshalResponse(DispatcherProxy.java:241)
at weblogic/messaging/dispatcher/DispatcherProxy.dispatchSyncTranFuture(DispatcherProxy.java:134)
at weblogic/messaging/dispatcher/DispatcherWrapperState.dispatchSyncTran(DispatcherWrapperState.java:334)
at weblogic/messaging/dispatcher/DispatcherWrapperState.dispatchSyncNoTran(DispatcherWrapperState.java:381)
at weblogic/messaging/dispatcher/DispatcherWrapperState.dispatchSync(DispatcherWrapperState.java:249)
at weblogic/jms/dispatcher/DispatcherAdapter.dispatchSync(DispatcherAdapter.java:43)
at weblogic/jms/frontend/FEConsumer.<init>(FEConsumer.java:296)
at weblogic/jms/frontend/FESession$2.run(FESession.java:1076)
at weblogic/security/acl/internal/AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
at weblogic/security/service/SecurityManager.runAs(SecurityManager.java:146)
at weblogic/jms/frontend/FESession.consumerCreate(FESession.java:1072)
at weblogic/jms/frontend/FESession.invoke(FESession.java:3027)
at weblogic/messaging/dispatcher/Request.wrappedFiniteStateMachine(Request.java:961)
at weblogic/messaging/dispatcher/DispatcherImpl.syncRequest(DispatcherImpl.java:185)
at weblogic/messaging/dispatcher/DispatcherImpl.dispatchSync(DispatcherImpl.java:220)
at weblogic/jms/dispatcher/DispatcherAdapter.dispatchSync(DispatcherAdapter.java:43)
at weblogic/jms/client/JMSSession.consumerCreate(JMSSession.java:3017)
at weblogic/jms/client/JMSSession.setupConsumer(JMSSession.java:2775)
at weblogic/jms/client/JMSSession.createConsumer(JMSSession.java:2717)
at weblogic/jms/client/JMSSession.createDurableSubscriber(JMSSession.java:2513)
at weblogic/ejb/container/internal/JMSConnectionPoller.setUpTopicSessionAt(JMSConnectionPoller.java:1530)
at weblogic/ejb/container/internal/JMSConnectionPoller.setUpTopicSessions(JMSConnectionPoller.java:1316)
at weblogic/ejb/container/internal/JMSConnectionPoller.createJMSConnection(JMSConnectionPoller.java:2311)
at weblogic/ejb/container/internal/JMSConnectionPoller.connect(JMSConnectionPoller.java:808)
at weblogic/ejb/container/internal/MDConnectionManager.timerExpired(MDConnectionManager.java:179)
at weblogic/timers/internal/TimerImpl.run(TimerImpl.java:284)
at weblogic/work/SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:550)
at weblogic/work/ExecuteThread.execute(ExecuteThread.java:263)
at weblogic/work/ExecuteThread.run(ExecuteThread.java:221)
at jrockit/vm/RNI.c2java(JJJJJ)V(Native Method)
这是执行的线程1
"ExecuteThread: '1' for queue: 'weblogic.socket.Muxer'": non-Java thread
at jrockit/ext/epoll/EPoll.epollWait0(ILjava/nio/ByteBuffer;II)I(Native Method)
at jrockit/ext/epoll/EPoll.epollWait(EPoll.java:123)[optimized]
at weblogic/socket/EPollSocketMuxer.processSockets(EPollSocketMuxer.java:156)
at weblogic/socket/SocketReaderRequest.run(SocketReaderRequest.java:29)
at weblogic/socket/SocketReaderRequest.execute(SocketReaderRequest.java:42)
at weblogic/kernel/ExecuteThread.execute(ExecuteThread.java:145)
at weblogic/kernel/ExecuteThread.run(ExecuteThread.java:117)
at jrockit/vm/RNI.c2java(JJJJJ)V(Native Method)
在每个线程中,我都会看到jrockit/vm/Threads.waitForNotifySignal中的一个“FLAT locks”,它正在等待一个信号来移除锁,但我找不到源代码(可能是ExecuteThread 1持有的ExecuteThread 2)
ExecuteThread 2似乎被ExecuteTread“1”持有,为什么
“weblogic.socket.Muxer”似乎读取服务器上的传入请求和客户端上的传入响应,是否正确?有可能知道他在等什么吗
谢谢你的帮助,我迷路了:/
问候,
C为了更好地澄清: BEA-002936 信息:已达到最大线程约束名称说明:已达到最大线程约束名称 原因:分配给此工作管理器的线程数已达到最大线程约束中的配置值 操作:无需操作
BEA-002937 信息:不再达到最大线程约束constraintName 说明:不再达到最大线程约束constraintName 原因:分配给此工作管理器的线程数已降至最大线程约束中的配置值以下 操作:无需操作
资料来源:为了更好地澄清: BEA-002936 信息:已达到最大线程约束名称说明:已达到最大线程约束名称 原因:分配给此工作管理器的线程数已达到最大线程约束中的配置值 操作:无需操作
BEA-002937 信息:不再达到最大线程约束constraintName 说明:不再达到最大线程约束constraintName 原因:分配给此工作管理器的线程数已降至最大线程约束中的配置值以下 操作:无需操作
来源:套接字复用器正在侦听传入的请求。线程转储总是显示带有套接字muxer的锁链,但这是WebLogic处理它们的方式。非常感谢您对套接字muser的解释,我想我明白了;)这也许是个愚蠢的问题:我应该担心BEA的这种警告吗?“BEA-002936最大线程约束ClusterMessaging已达到”我的一位同事问我为什么发生此警报,但我找不到根本原因,因为在线程转储中我找不到任何奇怪的东西,也许我只需要更改此警报的参数。问题从来都不愚蠢……有时回答;o) 您可以忽略BEA-002936警告消息。它们可以被忽略。如果你愿意,你可以创建一个日志过滤器来清除它们。非常感谢Emmanuel,问候,Socket Muxer正在侦听传入的请求。线程转储总是显示带有套接字muxer的锁链,但这是WebLogic处理它们的方式。非常感谢您对套接字muser的解释,我想我明白了;)这也许是个愚蠢的问题:我应该担心BEA的这种警告吗?“BEA-002936最大线程约束ClusterMessaging已达到”我的一位同事问我为什么发生此警报,但我找不到根本原因,因为在线程转储中我找不到任何奇怪的东西,也许我只需要更改此警报的参数。问题从来都不愚蠢……有时回答;o) 您可以忽略BEA-002936警告消息。它们可以被忽略。如果你愿意,你可以创建一个日志过滤器来清除它们。非常感谢Emmanuel,问候,