1. 程式人生 > >Centos7.2下tomcat8 shutdown報錯8005埠

Centos7.2下tomcat8 shutdown報錯8005埠

最近遇到這個問題,

在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了,不會異常了,
這個問題可折磨死小白我了,到此完美解決