CentOS环境下tomcat启动超级慢的解决方案

Posted Candyメ奶糖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS环境下tomcat启动超级慢的解决方案相关的知识,希望对你有一定的参考价值。

在本地开发环境,应用正常启动。

在CentOS测试环境,应用启动速度也是正常的。

但是在阿里云的生产环境,tomcat启动超级慢,并且在最终打印出来以下内容:

org.apache.catalina.util.SessionIdGenerator createSecureRandom
INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [152,149] milliseconds.

152秒,这可以就是2分钟啊。并且如果多次启动,可能需要等待更久,有几次上线只是在启动时等待了5分钟多。

经过百度,发现是Tomcat 7/8使用org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom类产生安全随机类SecureRandom的实例作为会话ID时,由于堵塞,造成时间上的消耗。

解决方案如下,由于第一种需要修改catalina.sh,在生产环境没有尝试。而是采用的第二种的方式。
有两种解决办法:
1)在Tomcat环境中解决
可以通过配置JRE使用非阻塞的Entropy Source。
在catalina.sh中加入这么一行:-Djava.security.egd=file:/dev/./urandom 即可。
加入后再启动Tomcat,整个启动耗时下降到Server startup in 2912 ms。
2)【已验证】在JVM环境中解决
打开$JAVA_PATH/jre/lib/security/java.security这个文件,找到下面的内容:
securerandom.source=file:/dev/urandom
替换成
securerandom.source=file:/dev/./urandom

以上是关于CentOS环境下tomcat启动超级慢的解决方案的主要内容,如果未能解决你的问题,请参考以下文章

CentOS7下Tomcat启动慢的原因及解决方案

阿里云 centos7 tomcat 启动巨慢的解决方法(几分钟)

Linux学习12-CentOS设置多个tomcat开机自启动

tomcat在linux中启动慢的解决方案

tomcat在linux中启动慢的解决方案

linux下tomcat启动很慢的解决办法