2014-03-03 75 views
3

當OutOfMemoryError發生時,我需要在服務器端自動重啓tomcat。最簡單的方法是使用JVM選項:OnOutOfMemoryError =「service tomcat restart」。發生OutOfMemoryError時自動重啓tomcat

問題:Tomcat是由tomcat用戶運行的。 tomcat用戶沒有權限使用service命令重新啓動tomcat,或者直接運行/etc/init.d/tomcat6(該腳本中的某些命令只能由root執行)。

此外,使tomcat用戶sudoer不是一個好主意。有沒有更好的方法來做到這一點?

+2

找到你的內存泄漏將是我的最佳選擇。你可以在這裏找到一些有用的文章https://plumbr.eu/blog –

回答

4

解決的辦法是修復內存泄漏,而不是自動重新啓動以解決它。這不是一個真正的解決方案,它仍然會跳出所有的用戶並迫使他們重新登錄。

0

除了修復您的OOM,使用Service Wrapper(自動重新啓動)啓動您的JVM實例作爲Tanuki Java Service Wrapper

如果我沒有記錯的話,版本3.2.3在LGPL之下。

0

如果這是由內存泄漏引起的,則應該修復該問題。但是,有時這種情況可能發生在某種類型的高使用率使用大量內存的情況下,並且施加硬性限制並不容易。如果是這樣的話......

在你的系統上,如果Tomcat崩潰,有什麼東西(比如FireDaemon)自動重啓它?如果是這樣,您可以嘗試重新啓動,而不是嘗試重新啓動,您可以嘗試退出

System.exit(1); 

這將結束Tomcat。但是,有時候,即使這可能不起作用,當你內存不足。

因此,解決這個問題的另一種方法是在您跨越一定比例的內存使用情況(比如85%)時提供警告機制。有免費的Tomcat監控解決方案可以幫助解決這個問題;或者,你可以嘗試推出自己的...簡單的東西。

相關問題