tomcat啓動過慢,日誌報WARNING: Creation of SecureRandom instance for session ID generation using [SHA1PRNG]

日誌以下:html

[2019-01-25 15:13:53,248]初始化系統緩存完畢!
[2019-01-25 15:13:53,248]系統監聽器初始化成功!
Jan 25, 2019 3:17:59 PM org.apache.catalina.util.SessionIdGeneratorBase createSecureRandom
WARNING: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [246,221] milliseconds.
[2019-01-25 15:17:59,580]FrameworkServlet 'managermvc': initialization started
[2019-01-25 15:17:59,582]Refreshing WebApplicationContext for namespace 'managermvc-servlet': startup date [Fri Jan 25 15:17:59 CST 2019]; parent: Root WebApplicationContext

明顯看到,第2行和第3行相差了4分鐘,卡在這裏一動不動,其實程序沒死,只不過在幹其餘的事,看不到而已。java

具體乾的事情就是,在生成安全隨機數。算法

Tomcat 7/8/9 都使用 org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom 類產生安全隨機類 SecureRandom 的實例做爲會話 ID。apache

Tomcat 使用 SHA1PRNG 算法是基於 SHA-1 算法實現且保密性較強的僞隨機數生成器。這四分鐘應該都是在執行這塊了。vim

copy一下大佬的解決辦法:緩存

方案有3個tomcat

方案1:經過rng-tools自動補充熵池(推薦)
安全

複製代碼
yum install rng-tools      #安裝rngd熵服務

systemctl start rngd       #啓動服務
cp /usr/lib/systemd/system/rngd.service /etc/systemd/system cd /etc/systemd/system/

vim rngd.service
ExecStart=/sbin/rngd -f 改成 ExecStart=/sbin/rngd -f -r /dev/urandom
systemctl daemon-reload   #從新載入服務 

systemctl restart rngd #重啓服務
複製代碼

重啓tomcat,查看日誌,啓動時間1271 mssession

15-Mar-2018 17:28:24.092 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 1271 ms

方案2:修改jvm參數mvc

經過修改JRE中的java.security文件securerandom.source=file:/dev/urandom

重啓tomcat,查看日誌,啓動時間1271 ms

15-Mar-2018 17:22:27.363 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 84777 ms

可見啓動速度比原來快了一半多,但仍是不理想

方案3:修改tomcat參數

經過修改Tomcat啓動文件-Djava.security.egd=file:/dev/urandom(沒嘗試過)

--->大佬博客詳細分析<---

相關文章
相關標籤/搜索