CentOS服務器運行Tomcat8啟動很慢的原因


tomcat版本:8.5.20

公司項目服務遷移到另一台服務器,原本正常啟動的項目,在另一台服務器(阿里雲CentOS7)tomcat啟動很慢,通常幾百秒啟動。查看日志可以發現

時間花在了生成session ID上。

這是由於Tocmat的Session ID的生成主要通過java.security.SecureRandom生成隨機數來實現,隨機數算法使用的是SHA1PRNG,由於熵池為空,導致阻塞

網上大部分解決辦法是:

通過修改Tomcat啟動文件-Djava.security.egd=file:/dev/urandom

通過修改JRE中的java.security文件securerandom.source=file:/dev/urandom

 

還有種解決方法我覺得比較好

參考:https://www.jianshu.com/p/576d356dc163

 

增大/dev/random的熵池。問題的原因是由於熵池不夠大,所以增大它是最徹底的方法。通過cat /proc/sys/kernel/random/entropy_avail
我們可以查看現在的熵池大小;我們需要找到一種方式來提高這個值就行了。如果你的CPU帶有DRNG特性,可以充分利用硬件來提高熵池產生的速度 。通過cat /proc/cpuinfo | grep rdrand
可以查看自己的CPU是否支持,一般來說Intel的Ivy_Bridge架構的CPU都支持(i3、i5需要注意是否采用該種架構,i7和xeon基本上都支持);AMD的CPU在2015年以后生成的都支持。(如果你是虛擬機需要開啟額外的參數)。如果你的硬件不支持,也沒有關系,我們可以讓/dev/unrandom來做“熵源”。以Centos7為例,
yum install rngd-tools
或者yum install rng-tools
安裝rngd服務(熵服務)

systemctl start rngd
啟動服務

 

可以將該服務設為開機自動啟動,這樣不光對tomcat還是其他程序,都能解決問題

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM