我的情況是這樣的:Tomcat關機調用shutdown.sh後很慢?
每次將war文件上傳到web-app文件夾,我都會通過調用sh shutdown.sh
來停止Tomcat。過去總共需要約30秒的關機時間。但現在它不再適用了。
其實,它做了一些工作,因爲當我從網頁訪問應用程序時,它會拋出503錯誤(維護下)。但是當我使用ps aux | grep tomcat
進行檢查時,tomcat進程仍然存在。它將在那裏約5-10分鐘。
據我所知,可能需要額外的時間來完成所有任務,但在完全停止之前它太慢了(5-10分鐘)。我不明白爲什麼會發生這種情況,但必須有一些原因。也許這與代碼或最近使用的新部署腳本有關。我幾乎不知道在哪裏檢查。
這對我們的團隊很重要,因爲我們使用的是「自動部署」,我們使用腳本來自動打包戰爭文件,在特定時間上傳和部署。如果我們在舊的成功關閉之前啓動了一個新的tomcat實例,它將會永久掛起,並且通過「kill -9」清理任務令人望而生畏。
有沒有人試驗過這個問題?任何線索將不勝感激。
問:那麼當它採取這一5-10分鐘,什麼是過去的事情在日誌中?另外:「ps -eaf」是否提供了任何線索(或者您是否看到一個CPU進程利用率爲零的Java進程)?什麼是您的Tomcat版本?你的OS?另外:如果你在「ps」中確定一個「java」進程「懸掛」,你應該得到一個堆棧跟蹤:http://wiki.apache.org/tomcat/HowTo#How_do_I_obtain_a_thread_dump_of_my_running_webapp_.3F – paulsm4
@ paulsm4:看着日誌,我發現即使在調用shutdown.sh之後,我的Quartz作業仍然運行。過了一會兒,錯誤被拋出:SEVERE:Web應用程序[/ project]似乎已經啓動了一個名爲[ResourceRestroyer in BasicResourcePool.close()]的線程,但未能阻止它。這很可能造成內存泄漏。 –
@ paulsm4:順便說一下,我有一次約10秒的石英工作。這可能是一個問題嗎? –