问题描述
Tomcat服务启动非常缓慢,查看Tomcat服务日志,日志信息类似如下。
org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [406,732] milliseconds.
系统显示类似如下。
问题原因
SecureRandom这个JRE的工具类存在问题。SecureRandom generateSeed慢是因为Tomcat7、Tomcat8服务都是使用org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom
类产生安全随机类SecureRandom的实例作为会话ID。
解决方案
本文提供以下两种解决方案。
在Tomcat环境中解决
- 可以通过配置JRE使用非阻塞的Entropy Source,在catalina.sh文件中添加如下内容。
-Djava.security.egd=file:/dev/./urandom
-
添加内容完成后重启Tomcat服务,查看Tomcat服务启动日志,确认启动耗时下降。
在JVM环境中解决
- 打开
$JAVA_PATH/jre/lib/security/java.security
文件。 - 在文件中找到如下内容。
securerandom.source=file:/dev/urandom
将内容替换为如下内容。
securerandom.source=file:/dev/./urandom
适用于
- 云服务器 ECS
文档内容是否对您有帮助?