现象描述: 无论通过命令行还是手动执行启动,tomcat实例均在加载配置文件时卡住,导致启动失败。
1. 首先查看catalina.out日志,有Log4j的实例停住了,但不能确定是哪个线程阻塞;
2. jstack查看线程信息,有outputStream.openAppend()这个方法上,一直没有返回,因此确定IO句柄不能获得——在读取一个文件的时候挂死了。
3. 检查相关的代码是Log4J,因此检查log4j的配置文件,发现配置的目标目录是NFS上。
4. NFS挂载因为网络原因不能访问时,访问挂载点的应用会永远挂起,不会超时也不会异常,因此确定问题。
本文介绍了一种Tomcat实例在启动过程中卡住的问题排查过程。现象表现为Tomcat无论通过命令行还是手动方式启动均失败,具体表现为加载配置文件时卡住。通过分析catalina.out日志和使用jstack工具,最终定位到Log4j配置文件中指向NFS挂载点,由于网络原因无法访问导致启动异常。
3368

被折叠的 条评论
为什么被折叠?



