原因是多方面,我遇到的情況有三種可能導致tomcat啓動項目變慢
情況一:tomcat在啓動過程中會檢查jar,當有大量的jar被檢測的時候,啓動需要很長時間
解決辦法:將catalina.properties文件中的這一行
tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\
修改爲 tomcat.util.scan.StandardJarScanFilter.jarsToSkip=*.jar
情況二:項目確定成功,但是耗時特別長
時間長到你懷疑人生,我的項目時springboot的,springmvc項目的話意思也一樣,我的springboot項目卡在了這一行
起初我以爲是我的項目哪有問題,排查了半天,排查過程中,大概有個十分鐘吧,突然就繼續往下啓動了
這時我才意識到其實並不是代碼的問題,一定是某些設置的問題,在沒有優化之前,我的啓動時間長的可怕
是這個東西在作怪,查詢一番資料後發現是“熵隨機”造成的org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom類產生安全隨機類SecureRandom的實例作爲會話ID
解決方案
方案一: 在catalina.sh中加入這麼一行:-Djava.security.egd=file:/dev/urandom 即可
方案二:在JVM環境中解決
在你的jdk的安裝路徑中的jre下 jre/lib/security/java.security這個文件
securerandom.source=file:/dev/random 修改爲
securerandom.source=file:/dev/urandom