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产生大量随机数的速度要慢,但随机数效果要好。
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产生大量随机数的速度要慢,但随机数效果要好。
相关文章推荐
- tomcat启动时createSecureRandom耗时长的问题
- tomcat启动时SessionIdGeneratorBase.createSecureRandom耗时5分钟的问题
- tomcat启动时SessionIdGeneratorBase.createSecureRandom耗时5分钟的问题
- tomcat启动太慢,耗时很长的问题 Creation of SecureRandom instance for ...
- tomcat启动时SessionIdGeneratorBase.createSecureRandom耗时5分钟的问题
- tomcat启动失败问题
- My eclipse中tomcat启动失败的问题
- 关于tomcat 启动不了的问题。
- 解决tomcat5.5以上不能用命令行启动的问题
- tomcat启动问题
- Tomcat6.0启动过程中可能遇到的一些问题及解决方案
- Tomcat 启动两次的问题
- 关于Tomcat安装后无法启动的问题
- MyEclipse中启动Tomcat出现的问题
- tomcat 启动的问题(org.apache.catalina.session.StandardManager.doLoad: IOException while loading persisted sessions)
- MyEclipse启动tomcat问题:please verify the preferences field with the prompt :can not find a free socket,郁闷了半天
- Tomcat 启动失败问题 (作者proglife)
- myeclipse启动tomcat碰到的数据连接问题
- tomcat启动问题
- myeclipse中启动tomcat的问题 (Source not found for StandardContext.start())