tomcat启动起来很慢,甚至是卡死在某一步骤的解决方案
我们在服务器上启动tomcat的时候,偶尔会碰到tomcat启动起来特别慢,甚至是卡死在某一步的情况,下面记录了我一次在CentOS上启动tomcat,使用 ./bin/startup.sh 命令启动后,通过命令 tail -f logs/catalina.out 查看tomcat日志
由上面日志可以看出,tomcat没有启动成功,但是也没有任何报错信息,但是过去了十几二十分钟之后,依然没有启动成功,始终卡死在 org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory 这一句。通过在网上搜索了半天终于解决了这个问题,在这里对这个问题做一下记录,免得以后碰到又再去搜索
这个问题的起因是tomcat启动的时候,需要通过Linux生成随机数的方式/dev/random生成随机数,但是如果生成随机数失败的话,就会一直阻塞中,这也就是tomcat启动为什么一直卡死某一行日志的原因,经过测试,可以通过配置/dev/urandom来取代/dev/random来解决,我们可以在两个地方进行配置,都可以解决这个问题,取其一即可
编辑$JAVA_HOME/jre/lib/security/Java.security文件,将 securerandom.source=file:/dev/random 换成 securerandom.source=file:/dev/urandom 即可
tomcat的catalina.sh文件位于tomcat目录下的bin目录下,通过在catalina.sh文件添加 -Djava.security.egd=file:/dev/urandom ,如下所示
配置完之后,再次启动tomcat,可以发现tomcat很快就启动成功了