1. 程式人生 > >如何優化提高tomcat啟動速度

如何優化提高tomcat啟動速度

在tomcat啟動的時候,我們可以做一些優化設定來使得tomcat的啟動更快速,下面是一些常見的優化加速啟動的方法建議(以tomcat-7.+為例說明)。

1、  Jars包

1.1、將一些不必要的jar包去掉,當tomcat啟動載入jar包的時候,會去搜尋每個jar包裡的class檔案,這些都會耗費一些時間,如果你把不必要的jar包去掉了,很顯然會節省時間。

1.2、你可以將一些與TLD files、註解、網路碎片無關的jar包加入到屬性

tomcat.util.scan.DefaultJarScanner.jarsToSkip的值中,這可以在conf/catalina.properties中進行設定。

2、  快取

你可以在bin/catalina.sh中設定jvm所能使用到的快取大小,如下:

JAVA_OPTS=’-Xms1024m -Xmx1024m’

3、  配置檔案

Tomcat的配置比如server.xml是xml檔案,而xml的解析也是要花時間的,如果我們能將xml配置檔案儘可能地弄得簡潔一些,比如去掉一些沒有用到的節點,這也有助於減少啟動的時間,雖然這個節省的時間看來很少。

4、  應用程式

4.1、確保你程式在啟動的時候沒有一些處理很耗時的地方。

4.2、刪除掉tomcat自帶的目錄webapps及下面的所有內容,不然的話每次啟動的時候都會載入這些自帶的例子。

4.3、修改WEB-INF/web.xml檔案,在預設的情況下<web-app>中的屬性metadata-complete的值為false,也就是這樣:<web-app metadata-complete=”false” >,這種情況下,tomcat在啟動時會去自動掃描是否有註解及網路碎片,如果你不想tomcat這樣做,你可以將metadata-complete的值設為true。

5、  並行啟動多個應用程式

預設情況下,假設在一個tomcat下你有多個應用,那麼啟動的時候,這些應用程式都是依次啟動的,除非所有應用全部啟動完畢,tomcat才會啟動完成,但從Tomcat 7.0.23+開始,你可以配置多個應用程式並行啟動了!你可以通過修改配置檔案中Host裡面的startStopThreads這個屬性的值來達到這個目的,將多個應用startStopThreads的值設為不同即可。

6、  Entropy Source

Tomcat 7+嚴重依賴SecureRandom這個類為它的session id或其它地方取得隨機數值,這取決於你的JRE,它有可能在tomcat啟動時造成非常大的耗時,比如,在子猴啟動tomcat-7.0.26的時候,它耗時近25秒!

INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [24,790] milliseconds.

要解決這個問題,可以通過配置JRE使用非阻塞的Entropy Source,在bin/ catalina.sh中加入這麼一行:-Djava.security.egd=file:/dev/./urandom 即可。

加入後我再啟動tomcat,整個啟動下降到僅耗時Server startup in 912 ms。

以上內容由子猴翻譯自tomcat官方網站。