Tomcat 8 -XX:OnOutOfMemoryError 无法重新启动 Tomcat

Tomcat 8 -XX:OnOutOfMemoryError unable to restart Tomcat

提问人:user1391606 提问时间:3/2/2022 更新时间:10/22/2022 访问量:245

问:

发生 OOM 时,我无法自动重新启动 Tomcat 实例。 我尝试了几个不同版本的定义XX:OnOutOfMemoryError值:

-XX:OnOutOfMemoryError='kill -9 %p;/application/tomcat/bin/start.sh'"
-XX:OnOutOfMemoryError='kill -9 %p;./application/tomcat/bin/start.sh'"
-XX:OnOutOfMemoryError="kill -9 %p;cd /application/tomcat8/bin/;./application/tomcat8/bin/start.sh"

但无论我尝试什么,start.sh 脚本都不会执行,catalina.out 显示:

# java.lang.OutOfMemoryError: Java heap space
# -XX:OnOutOfMemoryError="kill -9 %p;/application/tomcat8/bin/start_commons.sh"
#   Executing /bin/sh -c "kill -9 28005"...

Tomcat 实例被成功杀死,但随后什么也没发生。

有什么想法吗?

内存不足 tomcat8 重新启动

评论


答:

0赞 user1391606 10/22/2022 #1

唯一真正有效的方法是添加 XX:OnOutOfMemoryError,如下所示:

export CATALINA_OPTS="-Xms512m -Xmx1024m -XX:OnOutOfMemoryError='kill -9 %p' "

并有一个单独的脚本检查进程是否仍在运行,如果没有,则重新启动 Tomcat 实例。