018tomcat启动慢处理过程

tomcat启动慢——rngd服务,熵值

1.背景:


在公司新项目中,需要在新的服务器上部署一个tomcat,但是在启动时发现,tomcat启动非常慢,有
时候需要5,6分钟,显然不符合实际生产需要,于是网上查资料发现是熵池影起的。

2.什么是随机数

生成随机数是密码学中的一项基本任务,是生成加密密钥、加密算法和加密协议所必不可少的,随机数
的质量对安全性至关重要。只有实际物理过程才是真正的随机,只有借助物理世界中事物的随机性才能
产生真正的随机数,比如真空内亚原子粒子量子涨落产生的噪音、超亮发光二极管在噪声的量子不确定
性和放射性衰变等。

3.启动慢过程分析

Tomcat是刚下载解压出来的默认配置(只保留Tomcat自带),但根据上面的启动日志,竟然花了3分多
钟,然后仔细观察日志,主要是卡在初始化Session。开始我以为云服务器的问题,然后我在本地虚拟
机上同样操作,问题重现,并且更换了Tomcat7,问题仍然出现,所以。通过搜索和分析,Tomcat的
SessionID是通过SHA1PRNG算法计算得到的,SHA1算法需要一个密钥,这个密钥在Tomcat启动的时
候随机生成一个,生成是使用了Linux随机函数生成器/dev/random。读取它相当于生成随机数字。搜
索/dev/random,大概知道是什么鬼了:/dev/random会根据 噪音 产生随机数,如果噪音不够它就
会阻塞。Linux是通过I/O,键盘终端、内存使用量、CPU利用率等方式来收集噪音的,如果噪音不够生
成随机数的时候就会被阻塞。

4.解决方案

rngd服务来增加熵值,建议用此办法,因为别的软件也可能需要大的熵值
watch -n 1 cat /proc/sys/kernel/random/entropy_avail 
启动前在100~200之间,启动后在3000左右

rngd
yum -y install rng-tools
echo 'EXTRAOPTIONS="--rng-device /dev/urandom"' >/etc/sysconfig/rngd
service rngd start
chkconfig rngd on
chkconfig --list rngd
或在/etc/rc.d/rc.local中加入
rngd -r /dev/urandom -o /dev/random &
此办法只能解决tomcat的启动问题
$JAVA_PATH/jre/lib/security/java.security文件
修改securerandom.source=file:/dev/urandom为
securerandom.source=file:/dev/./urandom

5.原文链接:

http://blog.luojh.cn/2017/01/14/centos7xia-an-zhuang-tomcat8bing-qie-jie-jue-qi-dong-su-du-ju-man-de-wen-ti/

你可能感兴趣的:(018tomcat启动慢处理过程)