今天在幫一位同學解決了一個問題——Tomcat啟動超級慢,大概五六分鐘。解決之後,隻需要3秒鐘即可啟動。
問題怎麼解決呢?
在Tomcat的bin目錄下找到catalina.sh,然後打開它,在以下位置添加一行代碼:
-Djava.security.egd=file:/dev/urandom

2019年02月12日補充:很多朋友想知道原理,我就簡單說明一下。
Tomcat 7和Tomcat 8在啟動的時候會調用org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom來産生一串安全随機數。
在Linux(CentOS)環境下,随機數可以從兩個特殊的檔案中産生,一個是/dev/urandom,另外一個是/dev/random。
它們産生随機數的原理是利用目前系統的熵池來計算出固定一定數量的随機比特,然後将這些比特作為位元組流傳回。熵池就是目前系統的環境噪音,熵指的是一個系統的混亂程度,系統噪音可以通過很多參數來評估,如記憶體的使用,檔案的使用量,不同類型的程序數量等等。
/dev/random在不能産生新的随機數時會阻塞程式,直到根據熵池産生新的随機位元組之後才傳回;而/dev/urandom不會(ublock),當然,産生的随機數效果也不太好。
是以我們強制Tomcat使用/dev/urandom而不是/dev/random來産生随機數,速度就會大幅提升——由好幾分鐘到隻有幾秒鐘。