在部署一个简单的demo到centos7的时候发生了部署不上的情况。
卡在了Root WebApplicationContext: initialization completed in 4030 ms
上图:
经过一番排查找资料。问题及解决办法:
tomcat启动时要有一个SessionId ,这个SessionId是linux提供的(/dev/random),这个linux提供的随机数的生成算法 根据I/O 内存使用、cpu使用等等算出来的,把这些个影响随机数生成的称为噪音(熵值),当噪音不够时,随机数生成不了(阻塞)。随机数阻塞,tomcat sessionId阻塞,tomcat 阻塞,springboot阻塞,程序就卡在那,一动不动。
解决办法:
查看当前系统熵值:
cat /proc/sys/kernel/random/entropy_avail
安装熵服务
yum install rng-tools
启动/停止熵服务
systemctl start rngd
systemctl stop rngd
再次启动项目,正常。
完成!
注:
贴上上传前启动springboot启动日志 和上传后的 springboot启动日志
熵值在30的时候启动整整用了789s,11分钟。玩蛇哇。
当熵值在启动rngd的时候变为了3033
再次启动项目
仅用了14s!!!