在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等明确提示。