Tomcat7在Windows下启动一直正常,却在linux下启动巨慢。期间多次kill掉启动进程再重新启动,然并卵。。。
查阅了资料后发现,启动过慢主要是卡在初始化session(查看tomcat日志)。
Tomcat 的 SessionID 是通过 SHA1PRNG 算法计算得到的,SHA1 算法需要一个密钥,这个密钥在 Tomcat 启动的时候随机生成一个,生成是使用了 Linux 随机函数生成器/dev/random,读取它相当于生成随机数字。/dev/random会根据 噪音 产生随机数,如果噪音不够它就会阻塞。Linux 是通过 I/O,键盘终端、内存使用量、CPU 利用率等方式来收集噪音的,如果噪音不够生成随机数的时候就会被阻塞。
推荐解决办法:
- 安装熵服务
yum install rng-tools - 启动熵服务
systemctl start rngd
tomcat启动正常。
附:部分tomcat下载后直接解压,执行 sh startup.sh 无法启动tomcat(java环境正常!)
原因:tomcat/bin/下的 catalina.sh 没有x权限,startup.sh启动tomcat是调用catalina.sh启动的。(catalina.sh才是最终的启动脚本,startup.sh、shutdown.sh只是使用了不同的参数调用了它!)
解决办法:chmod +x catalina.sh