本文主要是介绍tomcat启动异常缓慢,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
引言
最近弄了个服务器再部署了个javaweb项目,但是再启动时候 发现Tomcat启动非常非常的慢,导致再部署完成以后 觉得项目像 没有起来一样, 这就很郁闷了,因为每次不熟需要等10多分钟,这是不能 忍受的,在查看通Tomcat启动日志的时候发现:
org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of
SecureRandom instance for session ID generation using [SHA1PRNG] took [253,251] milliseconds.
,通过查看日志,发现时间主要花在实例化 SecureRandom 对象上了。
原理解释
根本原因是 SecureRandom 这个 jre 的工具类的问题。那为什么 SecureRandom generateSeed 这么慢,甚至挂在 Linux 操作系统呢?
Tomcat 7/8 都使用 org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom 类产生安全随机类 SecureRandom 的实例作为会话 ID。
Tomcat 使用 SHA1PRNG 算法是基于 SHA-1 算法实现且保密性较强的伪随机数生成器。
在 SHA1PRNG 中,有一个种子产生器,它根据配置执行各种操作。
Linux 中的随机数可以从两个特殊的文件中产生,一个是 /dev/urandom,另外一个是 /dev/random。他们产生随机数的原理是利用当前系统的熵池来计算出固定一定数量的随机比特,然后将这些比特作为字节流返回。熵池就是当前系统的环境噪音,熵指的是一个系统的混乱程度&
这篇关于tomcat启动异常缓慢的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!