tomcat啟動時間過長的問題


阿里雲下的服務器安裝jdk1.8和tomcat之后出現了一個問題,初次運行tomcat沒有問題,可以正常訪問tomcat首頁,但是關閉之后再重啟就發現tomcat首頁刷不出來。而且再次關閉之后還報錯了。

關閉tomcat時的報錯圖片

報錯信息上顯示Tomcat may not be running,說明tomcat還沒有啟動,說明之前開啟tomcat就出現問題了。

方案一:

官方的文檔里有這個問題的解釋:修改$JAVA_HOME/jre/lib/security/java.security文件,替換securerandom.source=file:/dev/random為: file:/dev/urandom。對所有使用JVM的應用生效。(實際修改為:securerandom.source=file:/dev/./urandom)。修改之后重啟tomcat就很快了。

關於這個random和urandom,這個是linux的提供的隨機偽設備,提供永不為空的隨機字節數據流,許多加密解密程序需要用到它們提供的隨機數。它們的區別在於:random 依賴於系統中斷,因此在系統的中斷數不足時,/dev/random設備會一直封鎖,嘗試讀取的進程就會進入等待狀態,直到系統的中斷數充分夠用。這也就是tomcat啟動變慢的原因;而urandom不依賴系統的中斷,也就不會造成進程忙等待,但是數據的隨機性也不高。

可以通過od轉化為16進制后查看生成的隨機數據:

urandom生成的隨機數

但是使用random生成隨機數的時候一直刷不出來:

random生成隨機數很慢

方案二:

random是依賴於系統中斷產生的隨機數,因此可以使用外部進程產生中斷,增加產生隨機數的速度,安裝rng-tools這個軟件可以增加產生隨機數的速度。

yum install rng-tools

systemctl start rngd // 開啟服務

然后再使用random生成隨機數:

random生成隨機數很快

這次生成隨機數就很快了,安裝了rng-tools之后就直接可以使用random生成隨機數,而不需要去修改$JAVA_HOME/jre/lib/security/java.security中的生成隨機數的方式了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM