您的位置:首页 > 运维架构 > Tomcat

tomcat启动太慢耗时很长的问题

2017-04-28 09:34 316 查看
tomcat启动很长时间,tomcat输出日志如下:

INFO [localhost-startStop-1] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [142,478] milliseconds.

最终解决问题的办法:

方法1:修改JVM参数:

vim $JAVA_HOME/jre/lib/security/java.security 

修改内容:

#securerandom.source=file:/dev/random     #修改前
securerandom.source=file:/dev/./urandom   #修改后,注意"u"

方法2:修改Tomcat启动参数:

在catalina.sh中加入这么一行:-Djava.security.egd=file:/dev/./urandom 即可。重启tomcat启动速度变快。

详细原因:

tomcat7/8都使用org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom类产生安全随机类SecureRandom的实例作为会话ID。

SHA1 PRNG算法是基于SHA-1算法实现的、保密性较强的伪随机数生成器。算法中有一个种子生成器,它根据配置执行各种操作。

Linux中的随机数可以从两个特殊的文件中产生:

/dev/urandom:非阻塞的随机数产生器(unlocked),他会反复使用熵池中的数据来产生伪随机数,如果不能产生新的随机数时,不会阻塞。因此随机数产生效果不太好。

/dev/random:阻塞随机数产生器(locked),他会反复使用熵池中的数据来产生伪随机数,如果不能产生新的随机数时,会阻塞,直到能产生新的随机数才返回。因此随机效果好。

其生成随机数的原理是利用当前系统的熵池来计算出固定一定数量的随机比特,然后将这些比特作为字节流返回。熵池就是当前系统的环境噪音,熵指的是一个系统的混乱程度,系统噪音可以通过很多参数来评估,如内存的使用,文件的使用量,不同类型的进程数量等等。如果当前环境噪音变化的不是很剧烈或者当前环境噪音很小,比如刚开机的时候,而当前需要大量的随机比特,这时产生的随机数的随机效果就不太好。

因此:使用/dev/random比使用/dev/urandom产生大量随机数的速度要慢,但随机数效果要好。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: