今天将项目部署到JBoss服务器上,部署成功后,浏览器访问页面一直在等待响应。
查了很长时间,最后在服务器上通过jstack pid命令查看Java堆栈信息,发现了有两个线程死锁。
看到造成死锁的原因是因为log4j往控制台上打印信息时候,于是修改了项目的log4j配置文件,修改为不在控制台输出,重新打包部署,成功访问。
后来发现问题是log4j配置文件配置有问题:如下
我配置了两个输出,所以造成了再jboss上部署死锁问题(tomcat、jetty下可以正常运行,就是jboss上按照这个配置会出现死锁),解决办法就是删除掉一个输出,保留一个就ok。
推荐两个命令:
jstat和jstack 不了解的可以学习下