解決 Tomcat 啓動速度巨慢問題

日常

今天和學弟學妹們在實驗室吹水好不快樂,然而自己服務器問題還沒解決,具體問題是——之前使用windows服務端,一直想換成linux的,然後最近終於有時間換,卻發現問題解決到tomcat部署之後,部署的賊慢!大概需要5-6分鐘之久,遂找到一篇大佬寫的文章,就此記錄。

解決

查日誌

一開始我還以爲是服務器搭不上去,重啓了好幾次,結果玩手機等了一會兒,tomcat反而啓動了,當時也沒太注意,後來發現每次都是固定的5分鐘左右,就很奇怪了。其實tomcat的log下是會記錄各種用時的,這裏我們進入log目錄會找到當時的記錄。
這裏寫圖片描述
可以看到SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID generation ,這個是罪魁禍首,佔據了300s鐘的大頭!

找原因

Tomcat的SessionID是通過SHA1PRNG算法計算得到的,SHA1算法需要一個密鑰,這個密鑰在Tomcat啓動的時候隨機生成一個,生成是使用了Linux隨機函數生成器/dev/random。讀取它相當於生成隨機數字。/dev/random會根據 噪音 產生隨機數,如果噪音不夠它就會阻塞。Linux是通過I/O,鍵盤終端、內存使用量、CPU利用率等方式來收集噪音的,如果噪音不夠生成隨機數的時候就會被阻塞。

這裏直接照搬大佬的原話了,做做筆記。其實玩putty生產putty特有的公鑰.ppk文件的時候也遇到過,當時需要鼠標亂移以得到一些隨機值,應該和這個隨機噪音類似。

解決方案

既然是噪音不夠,那我們就增大熵池解決問題好了,

#獲取服務
apt-get install rng-tools  
#啓動服務
service rng-tools start
service rng-tools status
service rng-tools stop

結果

這次效果就非常明顯,直接2s多就搞定了。
這裏寫圖片描述

總結

多查,多看,多問。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章