tomcat啟動慢——rngd服務(wù),熵值
1.背景:
在公司新項目中,需要在新的服務(wù)器上部署一個tomcat,但是在啟動時發(fā)現(xiàn),tomcat啟動非常慢,有
時候需要5,6分鐘,顯然不符合實際生產(chǎn)需要,于是網(wǎng)上查資料發(fā)現(xiàn)是熵池影起的。
2.什么是隨機(jī)數(shù)
生成隨機(jī)數(shù)是密碼學(xué)中的一項基本任務(wù),是生成加密密鑰、加密算法和加密協(xié)議所必不可少的,隨機(jī)數(shù)
的質(zhì)量對安全性至關(guān)重要。只有實際物理過程才是真正的隨機(jī),只有借助物理世界中事物的隨機(jī)性才能
產(chǎn)生真正的隨機(jī)數(shù),比如真空內(nèi)亞原子粒子量子漲落產(chǎn)生的噪音、超亮發(fā)光二極管在噪聲的量子不確定
性和放射性衰變等。
3.啟動慢過程分析
Tomcat是剛下載解壓出來的默認(rèn)配置(只保留Tomcat自帶),但根據(jù)上面的啟動日志,竟然花了3分多
鐘,然后仔細(xì)觀察日志,主要是卡在初始化Session。開始我以為云服務(wù)器的問題,然后我在本地虛擬
機(jī)上同樣操作,問題重現(xiàn),并且更換了Tomcat7,問題仍然出現(xiàn),所以。通過搜索和分析,Tomcat的
SessionID是通過SHA1PRNG算法計算得到的,SHA1算法需要一個密鑰,這個密鑰在Tomcat啟動的時
候隨機(jī)生成一個,生成是使用了Linux隨機(jī)函數(shù)生成器/dev/random。讀取它相當(dāng)于生成隨機(jī)數(shù)字。搜
索/dev/random,大概知道是什么鬼了:/dev/random會根據(jù) 噪音 產(chǎn)生隨機(jī)數(shù),如果噪音不夠它就
會阻塞。Linux是通過I/O,鍵盤終端、內(nèi)存使用量、CPU利用率等方式來收集噪音的,如果噪音不夠生
成隨機(jī)數(shù)的時候就會被阻塞。
4.解決方案
rngd服務(wù)來增加熵值,建議用此辦法,因為別的軟件也可能需要大的熵值
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)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。