在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檔案,在預設的情況下中的屬性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。