轻松解决Tomcat启动慢的问题,只需一行代码
今天在幫一位同學解決了一個問題——Tomcat啟動超級慢,大概五六分鐘。解決之后,只需要3秒鐘即可啟動。
問題怎么解決呢?
在Tomcat的bin目錄下找到catalina.sh,然后打開它,在以下位置添加一行代碼:
-Djava.security.egd=file:/dev/urandom
2019年02月12日補充:很多朋友想知道原理,我就簡單說明一下。
Tomcat 7和Tomcat 8在啟動的時候會調用org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom來產生一串安全隨機數。
在Linux(CentOS)環境下,隨機數可以從兩個特殊的文件中產生,一個是/dev/urandom,另外一個是/dev/random。
它們產生隨機數的原理是利用當前系統的熵池來計算出固定一定數量的隨機比特,然后將這些比特作為字節流返回。熵池就是當前系統的環境噪音,熵指的是一個系統的混亂程度,系統噪音可以通過很多參數來評估,如內存的使用,文件的使用量,不同類型的進程數量等等。
/dev/random在不能產生新的隨機數時會阻塞程序,直到根據熵池產生新的隨機字節之后才返回;而/dev/urandom不會(ublock),當然,產生的隨機數效果也不太好。
所以我們強制Tomcat使用/dev/urandom而不是/dev/random來產生隨機數,速度就會大幅提升——由好幾分鐘到只有幾秒鐘。
最近,有不少讀者問我是怎么學習的,那我干脆就把我看過的一些優質書籍貢獻出來:
-
計算機基礎入門推薦:《程序是怎樣跑起來的》、《網絡是怎樣連接的》、《計算機是怎樣跑起來的的》
-
進一步認識計算機網絡:《計算機網絡:自頂向下》、《圖解http》
-
數據結構+算法入門:《大話數據結構》、《阿哈算法》
-
算法進階:《算法第四版》、《編程珠璣》
由于我是 Java 技術棧的,順便推薦幾本 Java 的書籍,從左到由的順序看到
-
Java:《Java核心技術卷1》、《編程思想》、《深入理解Java虛擬機》、《effective Java》、《Java并發編程的藝術》
-
數據庫:《mysql必知必會》、《MySQL技術內幕:InnoDB存儲引擎》
就先介紹這么多,這些都是最基礎最核心的,希望對那些不知道看什么書的同學有所幫助。
對了,我介紹的這些書籍,已經順便幫你整理好了,你可以在我的原創微信公眾號『沉默王二』回復『書籍』獲取哦
有收獲?希望老鐵們來個三連擊,給更多的同學看到這篇文章
1、老鐵們,關注我的原創微信公眾號「沉默王二」,專注于有趣有益的程序人生,保證你看完有所收獲,不信你打我。
2、給二哥點個贊唄,可以讓更多的人看到這篇文章,順便激勵下我,嘻嘻。
作者info
作者:沉默王二,CSDN 2019年度博客之星,《Web全棧開發進階之路》作者
原創公眾號:『沉默王二』,已寫了 250 多篇文章,專注于有趣的 Java 技術和有益的程序人生,期待你的關注。
轉載說明:務必注明來源(注明:來源于公眾號:沉默王二, 作者:沉默王二)
總結
以上是生活随笔為你收集整理的轻松解决Tomcat启动慢的问题,只需一行代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3_寻找假币问题(分治法)
- 下一篇: 百度移动搜索冰桶算法公告