其实tomcat启动慢这个问题应该说很常见,像加载一些比较重的spring配置文件时注定启动时间不会很快,一半从几秒到几十秒大家忍一忍也就过去了,可是最近做开发时发现自己部署在阿里云上的tomcat启动时间居然长达500000+ms,这怎么忍,于是下定决心查资料把这个坑填上。
重所周知在web开发中tomcat会管理大量的回话session,而Tocmat的sessionID是通过SHA1算法计算得到的,计算sessionID的时候必须有一个秘钥,为了提高安全性tomcat在启动的时候通过当前系统的熵池生成这个秘钥,归根到底,这个玩意儿就是导致tomcat启动慢的真正元凶。通过查资料在我理解看来,在Linux环境熵池的大小赖于"环境噪音",如果噪音不够秘钥的生成就会被阻塞。(注:linux是通过I/O,键盘终端、内存使用量、CPU利用率等方式来收集噪音 )
解决办法 - 提高随机函数生成器的熵池
1. 查看熵池大小 cat /proc/sys/kernel/random/entropy_avail
2. yum安装熵服务 yum install rngd-tools
3. 开启服务 systemctl start rngd
总结:
本人服务器使用的是centOS7.0版本,tomcat8.0,感兴趣的同学参考 https://yq.aliyun.com/articles/549059 感谢该作者