微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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,发现启动时间正常。
 

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐