首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >线程在org.apache.log4j.Category.callAppenders上被阻塞,但不等待任何锁

线程在org.apache.log4j.Category.callAppenders上被阻塞,但不等待任何锁
EN

Stack Overflow用户
提问于 2015-01-04 14:39:08
回答 1查看 6.4K关注 0票数 5

我的web应用程序(在weblogic上被延迟)宕机了,当我检查jstack信息时,我发现org.apache.log4j.spi.RootLogger上的大多数线程都被阻塞了。拥有这个锁的线程也被阻塞和阻塞了至少20分钟,直到我杀死这个进程,但它没有等待任何其他锁,这是怎么发生的?

下面是jstack信息:

被阻塞的线程拥有锁<783b8910>,但不等待其他锁:

代码语言:javascript
复制
"[STUCK] ExecuteThread: '58' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=7 tid=02e45400 nid=86 lwp_id=7959740 waiting for monitor entry [61cff000]
java.lang.Thread.State: BLOCKED (on object monitor)
at org.apache.log4j.Category.callAppenders(Category.java:201)
- locked <783b8910> (a org.apache.log4j.spi.RootLogger)
at org.apache.log4j.Category.forcedLog(Category.java:388)
at org.apache.log4j.Category.error(Category.java:302)

等待锁定<783b8910>的其他线程:

代码语言:javascript
复制
"[STUCK] ExecuteThread: '36' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=7 tid=02e0ea00 nid=64 lwp_id=7959717 waiting for monitor entry [62d7f000]
java.lang.Thread.State: BLOCKED (on object monitor)
at org.apache.log4j.Category.callAppenders(Category.java:201)
- waiting to lock <783b8910> (a org.apache.log4j.spi.RootLogger)
at org.apache.log4j.Category.forcedLog(Category.java:388)
at org.apache.log4j.Category.error(Category.java:319)

代码语言:javascript
复制
"[STUCK] ExecuteThread: '34' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=7 tid=02e0a200 nid=62 lwp_id=7959715 waiting for monitor entry [62eff000]
java.lang.Thread.State: BLOCKED (on object monitor)
at org.apache.log4j.Category.callAppenders(Category.java:201)
- waiting to lock <783b8910> (a org.apache.log4j.spi.RootLogger)
at org.apache.log4j.Category.forcedLog(Category.java:388)
at org.apache.log4j.Category.info(Category.java:663)

以此类推,总共有64个线程在等待锁定<783b8910>

这种情况每个月会发生1-3次,我找不到解决方案,因为我不知道为什么拥有锁的线程被阻塞,而不是等待其他锁。

log4j版本为1.2.13

EN

回答 1

Stack Overflow用户

发布于 2020-12-15 20:59:34

在Java Command Windows上,如果您单击停止打印日志,则此线程在打印日志时发生阻塞,因此线程在打印日志时处于阻塞状态。

因此,如果这就是问题所在,您可以使用AsyncAppender。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27763111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档