tomcat啟動慢——rngd服務拍顷,熵值
1.背景:
在公司新項目中名秀,需要在新的服務器上部署一個tomcat,但是在啟動時發(fā)現(xiàn)谆级,tomcat啟動非常慢,有
時候需要5,6分鐘,顯然不符合實際生產(chǎn)需要戒悠,于是網(wǎng)上查資料發(fā)現(xiàn)是熵池影起的。
2.什么是隨機數(shù)
生成隨機數(shù)是密碼學中的一項基本任務但绕,是生成加密密鑰、加密算法和加密協(xié)議所必不可少的惶看,隨機數(shù)
的質(zhì)量對安全性至關重要捏顺。只有實際物理過程才是真正的隨機,只有借助物理世界中事物的隨機性才能
產(chǎn)生真正的隨機數(shù)纬黎,比如真空內(nèi)亞原子粒子量子漲落產(chǎn)生的噪音幅骄、超亮發(fā)光二極管在噪聲的量子不確定
性和放射性衰變等。
3.啟動慢過程分析
Tomcat是剛下載解壓出來的默認配置(只保留Tomcat自帶)本今,但根據(jù)上面的啟動日志拆座,竟然花了3分多
鐘主巍,然后仔細觀察日志,主要是卡在初始化Session挪凑。開始我以為云服務器的問題孕索,然后我在本地虛擬
機上同樣操作,問題重現(xiàn)躏碳,并且更換了Tomcat7搞旭,問題仍然出現(xiàn),所以菇绵。通過搜索和分析肄渗,Tomcat的
SessionID是通過SHA1PRNG算法計算得到的,SHA1算法需要一個密鑰咬最,這個密鑰在Tomcat啟動的時
候隨機生成一個翎嫡,生成是使用了Linux隨機函數(shù)生成器/dev/random。讀取它相當于生成隨機數(shù)字永乌。搜
索/dev/random惑申,大概知道是什么鬼了:/dev/random會根據(jù) 噪音 產(chǎn)生隨機數(shù),如果噪音不夠它就
會阻塞铆遭。Linux是通過I/O硝桩,鍵盤終端、內(nèi)存使用量枚荣、CPU利用率等方式來收集噪音的碗脊,如果噪音不夠生
成隨機數(shù)的時候就會被阻塞。
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/
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者