1. 程式人生 > >linux Tomcat啟動速度慢的優化方法

linux Tomcat啟動速度慢的優化方法

1.啟動慢錯誤提示

31-May-2017 13:50:32.127 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.5.14
31-May-2017 13:52:32.356 INFO [localhost-startStop-1] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom 
Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [119,978] milliseconds.

2.原因

Tomcat 7/8都使用org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom類產生安全隨機類SecureRandom的例項作為會話ID,這裡花去了342秒,也即接近6分鐘。
隨機數產生器會手機來自裝置驅動器和其它源的環境噪聲資料,並放入熵池中。產生器會評估熵池中的噪聲資料的數量。當熵池為空時,這個噪聲資料的收集是比較花時間的。這就意味著,Tomcat在生產環境中使用熵池時,會被阻塞較長的時間。

3.解決方法3種

①:推薦:通過rng-tools自動補充熵池

執行命令: yum -y install rng-tools

echo 'EXTRAOPTIONS="--rng-device /dev/urandom"' >/etc/sysconfig/rngd

service rngd start

chkconfig rngd on

chkconfig --list rngd

②:在Tomcat環境中解決

可以通過配置JRE使用非阻塞的Entropy Source。
在catalina.sh中加入這麼一行:-Djava.security.egd=file:/dev/./urandom 即可。
加入後再啟動Tomcat,整個啟動耗時下降到Server startup in 2912 ms。

③:在JVM環境中解決
開啟$JAVA_PATH/jre/lib/security/java.security這個檔案,找到下面的內容:

securerandom.source=file:/dev/urandom

替換成

securerandom.source=file:/dev/./urandom