最近新上两个java项目,在部署按照Linux CentOS和Ubuntu服务器, 在启动tomcat的时候,加载非常慢,要5分钟左右,解决方案如下。
仔细观察Tomcat日志,启动慢主要是卡在初始化Session,Tomcat的SessionID是通过SHA1PRNG算法计算得到的,SHA1算法需要一个密钥,这个密钥在Tomcat启动的时候随机生成一个,生成是使用了Linux随机函数生成器/dev/random。读取它相当于生成随机数字。/dev/random会根据 噪音 产生随机数,如果噪音不够它就会阻塞。Linux是通过I/O,键盘终端、内存使用量、CPU利用率等方式来收集噪音的,如果噪音不够生成随机数的时候就会被阻塞。
解决方案:增大/dev/random的熵池
步骤如下:
1、安装熵服务
Linux CentOS 安装命令如下:
yum install rng-tools
Linux Ubuntu 安装命令如下:
apt-get install rng-tools
2、启动熵服务
Linux CentOS rngd 命令如下:
systemctl start rngd
systemctl stop rngd
Linux Ubuntu rngd 命令如下:
service rng-tools start
service rng-tools status
service rng-tools stop