2017-10-10 126 views
0

我可以選擇在外存上重新啓動tomcat。調試onoutofmemory無法啓動tomcat

-XX:OnOutOfMemoryError=/opt/tomcat/bin/restart.sh 

這裏是restart.sh

#!/bin/bash 

pkill -9 -f tomcat 
/opt/tomcat/bin/startup.sh 

的Tomcat執行腳本,殺死Tomcat的,但不會再次啓動它。這裏是日誌

java.lang.OutOfMemoryError: Java heap space 
# -XX:OnOutOfMemoryError="/opt/tomcat/bin/restart.sh" 
# Executing /bin/sh -c "/opt/tomcat/bin/restart.sh"... 

請幫我調試爲什麼Tomcat不重新啓動。

+0

我不知道爲什麼有人會投票 - 沒有正確閱讀就關閉。有點笨。看起來像tomcat執行腳本並坐在那裏。如果我手動運行腳本,它完全可以正常工作 – upagna

+0

是-XX:OnOutOfMemoryError應該是JVM還是Tomcat選項? Google沒有返回結果。 –

+1

如果腳本在子進程中運行,它可能會與tomcat一起被殺死。你可以在kill之前和之後添加一些回顯行來測試這個假設。 – Henry

回答

0

我沒有找到這個問題的答案,但我最終每隔2分鐘在tomcat上運行一次健康檢查,這解決了我在每當內存不足時手動重新啓動tomcat的問題。