最近新上兩個java項目,在部署按照Linux CentOS和Ubuntu服務器, 在啟動tomcat的時候,加載非常慢,要5分鍾左右,解決方案如下。
仔細觀察Tomcat日志,啟動慢主要是卡在初始化Session,Tomcat的SessionID是通過SHA1PRNG算法計算得到的,SHA1算法需要一個密鑰,這個密鑰在Tomcat啟動的時候隨機生成一個,生成是使用了Linux隨機函數生成器/dev/random。讀取它相當於生成隨機數字。/dev/random會根據 噪音 產生隨機數,如果噪音不夠它就會阻塞。Linux是通過I/O,鍵盤終端、內存使用量、CPU利用率等方式來收集噪音的,如果噪音不夠生成隨機數的時候就會被阻塞。
解決方案:增大/dev/random的熵池
步驟如下:
1、安裝熵服務
Linux CentOS 安裝命令如下:
yum install rng-tools
Linux Ubuntu 安裝命令如下:
apt-get install rng-tools
2、啟動熵服務
Linux CentOS rngd 命令如下:
systemctl start rngd
systemctl stop rngd
Linux Ubuntu rngd 命令如下:
service rng-tools start
service rng-tools status
service rng-tools stop