分析tomcat啟動巨慢問題
阿新 • • 發佈:2018-12-09
其實tomcat啟動慢這個問題應該說很常見,像載入一些比較重的spring配置檔案時註定啟動時間不會很快,一半從幾秒到幾十秒大家忍一忍也就過去了,可是最近做開發時發現自己部署在阿里雲上的tomcat啟動時間居然長達500000+ms,這怎麼忍,於是下定決心查資料把這個坑填上。
重所周知在web開發中tomcat會管理大量的回話session,而Tocmat的sessionID是通過SHA1演算法計算得到的,計算sessionID的時候必須有一個祕鑰,為了提高安全性tomcat在啟動的時候通過隨機數生成這個祕鑰,歸根到底,這個玩意兒就是導致tomcat啟動慢的真正元凶。通過查資料在我理解看來,在Linux環境下這個祕鑰的生成依賴於linux下的一個隨機函式生成器,而這個生成器會根據 噪音 產品隨機數,如果噪音不夠就會被阻塞。(注:linux是通過I/O,鍵盤終端、記憶體使用量、CPU利用率等方式來收集噪音 )
解決辦法 - 提高隨即函式生成器的熵池
1. 檢視熵池大小 cat /proc/sys/kernel/random/entropy_avail
2. yum安裝熵服務 yum install rngd-tools
3. 開啟服務 systemctl start rngd
總結: