ubuntu下tomcat啟動巨慢分析


在一個ubuntu14新環境部署tomcat,通過CI啟動一個應用時,啟動耗時達到15分鍾之久。仔細看tomcat輸出的耗時統計日志發現如下日志:
Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took[97431]
在stackoverflow上逛了一會發現如下解釋:
 
試了下,問題解決了。那么為什么有的機器上會這樣,而有的機器正常呢?參考: http://en.wikipedia.org/wiki//dev/random#Linux
問題的核心指向隨機密碼生成器中,關於環境噪音采集部分的處理。所謂環境噪音,就是來自各個設備驅動與其它來源的二進制數據,也稱之為熵。熵池則是存儲這些噪音數據的地方。當熵池為空的時候,采用/dev/random會存在阻塞。
但是,檢查環境配置,安裝的java是采用/dev/urandom進行處理。其模式是熵池為空時,非阻塞。很顯然,還不止如此,從stackoverflow鏈接中可以找到一段描述,解釋了為何jdk用了/dev/urandom,但是還是不生效。
隨機數生成器,基於SHA1PRNG。而SHA1PRNG重度依賴高質量的種子,如果種子不夠好,隨機數結果將可被預測。因此開發人員需要確保/dev/random被用作熵的來源,即便JVM配置為使用/dev/urandom。
所以切換熵源為/dev/urandom,也需要確保/dev/random有足夠的熵。如果系統有硬件RNG,通過安裝rng-tools能夠提供足夠的熵。否則就需要安裝haveged來提供一個足夠好的熵來源而不依賴硬件的RNG。在虛擬機中,rng-tools能夠從主機中獲取虛擬硬件RNG來提供熵。EGD作為此環境下的一個替代,但是在ubuntu的資源庫內,沒有提供此軟件支持,所以就存在隱患。


免責聲明!

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



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