为啥Holding lock会导致weblogic挂掉?
weblogic发生异常的挂掉,打印的堆栈信息如下,有几个不明白的地方,望各位好心人帮忙看看。
dump文件里有好几种信息,不明白是什么含义
1. 下面这个是不是表示这个线程是正常的?
2. 这个也是正常的吧,看到有Lock released
3. 下面这个是不是发生问题的地方呢?这里有Holding lock,有weblogic的,也有我们自己程序的(这里修改了包名),就想知道会不会是因为这里的lock导致weblogic挂掉呢?
dump文件里的异常就上面三种,我想问题肯定是出在holding lock上。 这种holding lock能否这么理解,就比如说一个线程A写文件,写的同时对文件加锁,不允许其他线程写。但是现在又有线程B,C,D。。。要写这个文件,但是A又一直不释放锁。时间久了会不会导致weblogic挂掉呢?
这个holding lock到底是什么含义呢?
dump文件里有好几种信息,不明白是什么含义
1. 下面这个是不是表示这个线程是正常的?
"Finalizer" id=7 idx=0x3c tid=28893 prio=8 alive, in native, native_waiting, daemon
at jrockit/memory/Finalizer.waitForFinalizees([Ljava/lang/Object;)I(Native Method)
at jrockit/memory/Finalizer.access$500(Finalizer.java:12)
at jrockit/memory/Finalizer$4.run(Finalizer.java:152)
at java/lang/Thread.run(Thread.java:595)
at jrockit/vm/RNI.c2java(IIIII)V(Native Method)
-- end of trace
2. 这个也是正常的吧,看到有Lock released
"Timer-0" id=12 idx=0x48 tid=28920 prio=5 alive, in native, waiting, daemon
-- Waiting for notification on: java/util/TaskQueue@0x1e38b098[fat lock]
at jrockit/vm/Threads.waitForNotifySignal(JLjava/lang/Object;)Z(Native Method)
at java/lang/Object.wait(J)V(Native Method)
at java/util/TimerThread.mainLoop(Timer.java:509)
^-- Lock released while waiting: java/util/TaskQueue@0x1e38b098[fat lock]
at java/util/TimerThread.run(Timer.java:462)
at jrockit/vm/RNI.c2java(IIIII)V(Native Method)
-- end of trace
3. 下面这个是不是发生问题的地方呢?这里有Holding lock,有weblogic的,也有我们自己程序的(这里修改了包名),就想知道会不会是因为这里的lock导致weblogic挂掉呢?
"ExecuteThread: '3' for queue: 'weblogic.socket.Muxer'" id=25 idx=0x74 tid=28931 prio=5 alive, in native, daemon
at jrockit/ext/epoll/EPoll.epollWait0(IIII)I(Native Method)
at jrockit/ext/epoll/EPoll.epollWait(EPoll.java:103)
at weblogic/socket/EPollSocketMuxer.processSockets(EPollSocketMuxer.java:156)
^-- Holding lock: java/lang/String@0x1e3923a8[fat lock]
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(IIIII)V(Native Method)
-- end of trace
"Timer-3" id=48 idx=0xac tid=28970 prio=5 alive, in native, daemon
at jrockit/net/SocketNativeIO.readBytesPinned(Ljava/io/FileDescriptor;[BIII)I(Native Method)
at jrockit/net/SocketNativeIO.socketRead(SocketNativeIO.java:31)
at java/net/SocketInputStream.socketRead0(Ljava/io/FileDescriptor;[BIII)I(SocketInputStream.java)
at java/net/SocketInputStream.read(SocketInputStream.java:129)
at oracle/net/ns/Packet.receive()V(Unknown Source)
at oracle/net/ns/DataPacket.receive()V(Unknown Source)
at oracle/net/ns/NetInputStream.getNextPacket()V(Unknown Source)
at oracle/net/ns/NetInputStream.read([BII)I(Unknown Source)
at oracle/net/ns/NetInputStream.read([B)I(Unknown Source)
at oracle/net/ns/NetInputStream.read()I(Unknown Source)
at oracle/jdbc/driver/T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1099)
at oracle/jdbc/driver/T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1070)
at oracle/jdbc/driver/T4C8Oall.receive(T4C8Oall.java:478)
at oracle/jdbc/driver/T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
at oracle/jdbc/driver/T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:955)
at oracle/jdbc/driver/OracleStatement.executeMaybeDescribe(OracleStatement.java:1060)
at oracle/jdbc/driver/T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:839)
at oracle/jdbc/driver/OracleStatement.doExecuteWithTimeout(OracleStatement.java:1132)
at oracle/jdbc/driver/OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3316)
at oracle/jdbc/driver/OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3361)
^-- Holding lock: oracle/jdbc/driver/T4CConnection@0x15156610[thin lock]
^-- Holding lock: oracle/jdbc/driver/T4CPreparedStatement@0x3c5ec1a0[thin lock]
at weblogic/jdbc/wrapper/PreparedStatement.executeQuery(PreparedStatement.java:97)
at com/xx/db/DBSql.queryRecordsStatic(DBSql.java:681)
at com/xx/db/DBSql.queryRecords(DBSql.java:221)
at com/xx/xx/xx/dao/EsbMsgDao.queryRecords(EsbMsgDao.java:101)
at com/xx/xx/xx/dao/EsbMsgLog.queryMsgCallBack(EsbMsgLog.java:80)
at com/xx/xx/xx/task/MainProcessor.callbackProcessor(MainProcessor.java:120)
at com/xx/xx/xx/task/MainProcessor.doProcessor(MainProcessor.java:29)
at com/xx/xx/xx/task/EsbMsgRunTask.runTask(EsbMsgRunTask.java:41)
at com/xx/frame/task/TaskManager$1MyTimerTask.run(TaskManager.java:301)
at java/util/TimerThread.mainLoop(Timer.java:512)
at java/util/TimerThread.run(Timer.java:462)
at jrockit/vm/RNI.c2java(IIIII)V(Native Method)
-- end of trace
"Thread-18" id=54 idx=0xc4 tid=28976 prio=5 alive, in native, daemon
at java/net/PlainSocketImpl.socketAccept(Ljava/net/SocketImpl;)V(Native Method)
at java/net/PlainSocketImpl.accept(PlainSocketImpl.java:384)
^-- Holding lock: java/net/SocksSocketImpl@0x2ac27060[fat lock]
at java/net/ServerSocket.implAccept(ServerSocket.java:450)
at java/net/ServerSocket.accept(ServerSocket.java:421)
at com/xx/xx/xx/xx/xx/FlowCtrlListenThread.run(FlowCtrlListenThread.java:25)
at jrockit/vm/RNI.c2java(IIIII)V(Native Method)
-- end of trace
dump文件里的异常就上面三种,我想问题肯定是出在holding lock上。 这种holding lock能否这么理解,就比如说一个线程A写文件,写的同时对文件加锁,不允许其他线程写。但是现在又有线程B,C,D。。。要写这个文件,但是A又一直不释放锁。时间久了会不会导致weblogic挂掉呢?
这个holding lock到底是什么含义呢?
...全文
相关推荐
PANO_20261029_160547.jpg
jdjjdjd
Special-Comfy-part1.7z.053
ComfyUI专用模型资源分卷压缩包,Special-Comfy-part1系列第053卷。7z分卷格式,单卷900MB,需配合全部分卷解压使用。
Special-Comfy-part1.7z.036
ComfyUI专用模型资源分卷压缩包,Special-Comfy-part1系列第036卷。7z分卷格式,单卷900MB,需配合全部分卷解压使用。
国央企创新负责人如何通过平台实现技术供需的智能匹配与资源协同?.docx
国央企创新负责人如何通过平台实现技术供需的智能匹配与资源协同?
AI 开发同城桶装水配送系统上门订水小程序源码
AI 开发的上门送水 uniapp 小程序模板,包含水品展示、水票购买、订单状态管理、地址管理、邀请好友推广等功能,支持多端发布,方便线下水站二次开发上线运营。 想订水的人可以在电脑或手机的网页里使用,也可以在微信里打开网页使用。 底部有三个主入口:首页、购物车、我的。 先记住三个词,后面会反复用到: 站点:负责给你送水的附近门店。换了地址,可能要换站点。 水票:事先买好的送水券。下单时如果还有剩余,可以直接拿水票抵,不用再付钱。 水贝:平台里的余额,可以当钱用。购物车和付款时都能看到还剩多少。 押桶:桶装水的空桶要先交押金。送水时一般是空桶换满桶,押桶数量不够就不能下这类需要压桶的水。


Java SE
