線上的Tomcat運行一段時間就會假死,通過netstat查看端口情況會發現tomcat的端口出現大量的CLOSE_WAIT,此時Tomcat會停止響應前端請求,同時服務端的日志,操作等將全部停止,而且沒有出現任何異常。
#netstat -atp | grep 8191 | wc -l
肯定是代碼問題,於是將服務器線程堆棧dump下來分析具體的問題,好在jdk下面提供了各種工具給我們,bingo,打開jvisualvm,導入線程堆棧信息,發現全是http的請求:
接下來可以看具體的哪行代碼導致的:
因為代碼里面大量的創建http鏈接,而未進行及時關閉導致,改掉之后重新上線,觀察一段時間后再也沒出現。