我正在使用脚本在OOM发生时自动重启tomcat
我提出这个论点:
XX:OnOutOfMemoryError='myscript.sh'
但是当脚本重启tomcat时它会失败,因为当我杀死tomcat PID时,stocket仍然是打开的
所以我尝试从myscript.sh启动一个脚本,但这个新脚本(OOM.sh)仍然由stocket打开,所以什么都不做。
我如何继续?
感谢
答案 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秒钟。