tomcat启动慢原因分析

之前公司模拟机器上会偶尔出现tomcat启动非常缓慢的问题,可以排除是数据库连接原因,而且本机从未出现过这种问题,找机会分析了一下,其中查到了这条日志:

14:15:59.494 INFO [localhost-startStop-1] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [310,908] milliseconds.

这个阻塞了tomcat启动达到了5分多钟

搜索了一下原因,发现是tomcat在启动时会从 /dev/random (java.security中配置)读取熵用来生成session id等[见]

/dev/random是阻塞的,每次tomcat执行到这里都会等待收集到足够的熵才继续执行,而熵是通过系统从鼠标、键盘、磁盘网络IO等随机事件生成的,模拟机因为平时操作较少,因此熵严重不足。

linux可以通过下面的命令查询系统的熵值,一般要大于1000

cat /proc/sys/kernel/random/entropy_avail

解决åŠ