在Ubuntu Tomcat日志中识别死锁可从以下方面入手:
查看关键日志文件
catalina.out
:记录运行时异常,死锁时可能出现Deadlock
关键字或线程长时间阻塞的堆栈信息。localhost.log
):若应用有自定义日志,可能包含业务死锁的详细信息。分析线程状态
jstack
生成线程转储文件,搜索deadlock
或BLOCKED
状态的线程,查看其等待的锁资源及调用栈。Thread A等待Lock1,Thread B等待Lock2且Lock2被Thread A持有
)。结合系统工具辅助判断
top -H
查看Tomcat进程的线程CPU占用,死锁线程通常处于D
(不可中断睡眠)或长时间S
(可中断睡眠)状态。-Xloggc
),分析频繁GC是否因死锁导致对象无法释放。关键日志特征:
java.lang.Thread.State: BLOCKED
或Found one Java-level deadlock
等明确提示。