内存不足时重启Tomcat的脚本

时间:2016-08-18 14:56:46

标签: tomcat out-of-memory restart

我正在使用脚本在OOM发生时自动重启tomcat 我提出这个论点: XX:OnOutOfMemoryError='myscript.sh'

但是当脚本重启tomcat时它会失败,因为当我杀死tomcat PID时,stocket仍然是打开的

所以我尝试从myscript.sh启动一个脚本,但这个新脚本(OOM.sh)仍然由stocket打开,所以什么都不做。

我如何继续?

感谢

1 个答案:

答案 0 :(得分:0)

也许你的脚本需要稍等一下,而不是立即尝试重新启动Tomcat。

而不是像这样编写脚本:

#!/bin/sh
export CATALINA_HOME=...
export CATALINA_BASE=...
$CATALINA_HOME/bin/catalina.sh start

请改为:

#!/bin/sh
export CATALINA_HOME=...
export CATALINA_BASE=...
export CATALINA_PID_FILE=...
export PID=$(cat $CATALINA_PID_FILE)
while [ "1" == "$(kill -0 $PID)" ]; do
    sleep 1
done
$CATALINA_HOME/bin/catalina.sh start

这将睡眠直到Tomcat关闭。在等待一段时间让Tomcat干净地关闭之后,你可以在kill -9过程中添加一个超时...可能是10秒钟。