2009-11-24 130 views
11

我有一個Grails應用程序,構建到戰爭文件(約30mb)。當我嘗試通過應用程序管理器將戰爭文件部署在Tomcat 6上時,部署需要10分鐘以上,或者無限期掛起。當它掛起時,我可以重新啓動Tomcat,通常部署該應用程序,但有時我必須重複該過程。我還注意到,在部署過程中,Java進程最大限度地利用了CPU,RAM大約在10-15%之間。在Tomcat上的戰爭部署需要年齡

我對Java相當陌生,所以我不知道這是否正常,但我無法想象它會如何。有什麼我可以做的,使這個運行更流暢/更快?有沒有比Tomcat的應用程序管理器更好的部署方式?

+0

檢查tomcat日誌(tomcat/logs /) – Bozho

回答

7

我上傳的戰爭我的主目錄,CD到/ usr /本地/ Tomcat中,然後運行以下命令:

bin/shutdown.sh 
rm webapps/ROOT.war 
rm -rf webapps/ROOT 
cp ~/ROOT.war webapps 
bin/startup.sh 
+0

這些似乎是要走的路。直接從webapps文件夾部署只需要一兩分鐘。回覆:熱部署後,我發現系統在熱部署後有點呆滯,所以關機,部署和啓動策略似乎最好。謝謝! – Thody

+1

關於熱部署的另一個注意事項是,CPU使用率爲100%,實時應用程序無論如何都完全無法使用,因此在部署過程中將Tomcat保持在線狀態幾乎沒有什麼好處。 – Thody

1

請勿使用應用程序管理器。我的方式是將其上傳到webapps目錄的某個位置,然後將其複製到webapps目錄。花費的時間少得多。

+0

如果應用程序服務器在所有文件(相關類本身)都已被複制之前開始加載web應用程序,它會不會發生衝突? –

+0

我複製戰爭文件,而不是提取文件。 – Trick

1

絕對檢查Tomcat日誌是否有任何錯誤/警告。

您可能在ServletContextListener之一中有一些昂貴/敏感的代碼邏輯。它們通常在啓動時初始化。如果是這樣,那麼我會調試/分析它的任何性能問題/泄漏。

2

如前所述我會戰爭複製到web應用文件夾,並讓Tomcat做部署,它也更快節省您的時間。

Tomcat和Jetty都將支持熱部署。他們只是監視部署目錄中的更改,因此您可以將.war文件複製到該目錄中,服務器將取消部署/重新部署。

如果使用遠程服務器檢查滯後時間,則不需要通過網絡將戰爭上傳到遠程服務器。

0

並不總是您有足夠的訪問權限來手動將文件放入webapps文件夾中 - 您應該使用Tomcat應用程序管理器進行.war文件部署,並且需要使其工作。

對我來說,上傳.war文件到服務器的過程不能完成;它會卡在中間的某個位置,而且文件只能部分上傳到服務器,無論我重試多少次。在這種情況下,我發現值得嘗試另一種瀏覽器。例如,我發現自己使用谷歌瀏覽器卡住了,但是一旦我切換到新開始的Firefox瀏覽器,事情就解決了。

+0

部署帳戶的超級用戶權限可以爲您創造奇蹟。直接複製到文件系統比使用Tomcat管理界面更快 – Alfishe