Centos7.2下tomcat8 shutdown報錯8005埠
阿新 • • 發佈:2018-12-31
最近遇到這個問題,
在Centos7.2下搭建了一個tomcat8,開始用的挺好,突然有一次shutdown.sh關閉tomcat時報錯了,裡面有8005啥的
以後再也用不了tomcat了,shutdown.sh永遠失敗,重啟伺服器也不行(雲伺服器)
(ps:最新發現,不是tomcat不能用了,是啟動太慢了,我誤認為不能用了,上述錯誤出現後,殺死tomcat程序或者重啟伺服器就可以解決,唉,小白苦逼啊)
最後找到原因:
tomcat在啟動時會使用如下幾個埠
其中8005埠使用的比較晚,也就是說,我們剛startup.sh的時候,使用netstat -tlpn檢視,是沒有8005埠的,過一段時間tomcat完全啟動
之後,才會出現8005端口占用。
而出現我那種情況的原因是,在tomcat啟動後,8005端口占用前,我就shutdown.sh了,就報錯8005云云。。。
所以以後shutdown.sh的時候確保8005已佔用就好了
20161014更新:
在8005埠啟動前就shutdown.sh,導致了異常,為什麼別人沒有遇到?原來別人的tomcat在1s內就啟動8005埠了,而我的tomcat啟動為什麼這麼慢?
檢視tomcat log
大紅框為一次完整啟動tomcat列印的log,圖中可以看出耗時在小紅框標記的地方,經搜尋,終於找到啟動慢的根源了,原來是計算隨機數的時候阻塞了。。
解決方法:
直接配置jdk securerandom.source 為urandom解決:
開啟$JAVA_HOME/jre/lib/security/java.security這個檔案,找到securerandom.source配置項
修改為:
securerandom.source=file:/dev/./urandom
好了好了,tomcat啟動快了,800ms搞定,我沒機會在8005啟動前shutdown.sh了,不會異常了,
這個問題可折磨死小白我了,到此完美解決