1.修改jre的文件
修改jre的文件(你自己的jre位置,可以使用命令搜索java.security文件find . -name java.security)
/usr/local/jdk1.8.0_111/jre/lib/security/java.security
将securerandom.source=file:/dev/random修改为
securerandom.source=file:/dev/./urandom
这种方法治标不治本,有可能会不起作用,下面的方法亲测可用
2.增大/dev/random的熵池
部署项目在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