centos7 tomcat8 配置 java web环境 熵池不够大 启动慢问题

./startup.sh之后,就访问我的主页xxx.xxx.xxx.xxx:8080,我就看到那个网页那个小圈一直再转啊,再转啊,快的能转五六分钟,慢的能转十几分钟都不能打开。

原因:

在apache-tomcat官方文档:如何让tomcat启动更快里面提到了一些启动时的优化项,其中一项是关于随机生成时,采用的“熵源”(entropy source)的策略。
他提到tomcat7的session id的生成主要通过java.security.SecureRandom生成随机数来实现,随机数算法使用的是”SHA1PRNG”

A.使用伪随机函数生成

/dev/unrandom /dev/urandom 并不是真正的随机行为(其实一般不容易重复),主要有两个地方可以修改
通过修改 Tomcat 启动文件 -Djava.security.egd=file:/dev/urandom
通过修改 JRE 中的 java.security 文件 securerandom.source=file:/dev/urandom


B.增大/dev/random的熵池(推荐) 

问题的原因是由于熵池不够大,所以增大它是最彻底的方法。我们可以通过软件的方法实现,下面是软件的安装和配置流程。
安装熵服务

yum install rng-tools

启动熵服务

systemctl start rngd

如果你的 cpu 不支持 DRNG 特性或者像我一样使用虚拟机,可以使用/dev/unrandom来模拟。

cp /usr/lib/systemd/system/rngd.service /etc/systemd/system
vim /etc/systemd/system/rngd.service

#以下是编辑内容
ExecStart=/sbin/rngd -f -r /dev/urandom

重新载入服务

systemctl daemon-reload
systemctl restart rngd

经过上面的修改,我们再观察 cat /proc/sys/kernel/random/entropy_avail 基本上在 3000 左右。这个时候重新启动 Tomcat,发现启动时间正常。
 

 

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...