幫一位同學解決了一個問題——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來產生隨機數,速度就會大幅提升——由好幾分鐘到只有幾秒鐘。