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

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产生大量随机数的速度要慢,但随机数效果要好。



  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值