自动重启Tomcat当它遇到内存溢出错误时。

3

如何配置Tomcat在出现内存溢出错误时自动重启。

我认为

-XX:OnOutOfMemoryError="/yourscripts/tomcat-restart"

但是不确定这里的 "yourscripts" 指的是哪个目录?

你的脚本只是一个位置,在那里你有一个名为tomcat-restart.sh的脚本。 - Satya
你最好创建一个bash脚本来检查tomcat进程是否正在运行,如果没有则启动它。然后你可以配置这个脚本在cron上以你喜欢的间隔运行。但是你不应该这样做,你应该找出为什么会发生内存溢出问题并解决它,这将更加明智。 - Jorge Campos
检查该进程是否有助于某些类型的崩溃,但有时JVM会变成僵尸状态,因此该进程仍在运行但无响应。 - Dave Morrissey
1
注意:有时候发生OOM也可能是可以恢复的原因。并不总是一种“终结”的情况。对我来说,这似乎是通过扔锤子来解决问题。 - Gimby
1个回答

5

-XX:OnOutOfMemoryError选项所提供的值必须是可执行文件的完全限定路径(可以是可执行脚本)。该脚本必须立即返回,以便JVM可以继续关闭。因此,它需要尝试在后台停止和启动Tomcat。这可能会导致实际上有2个脚本:

脚本1:

#!/bin/bash
script2.sh &

脚本 2:

# stop tomcat
# make sure it is dead (kill "zombie" process if necessary)
# start tomcat
-XX:OnOutOfMemoryError应指向脚本1。

谢谢!我的重启脚本出了问题,因为它在内部杀死了Tomcat,这样留下了套接字,所以我无法完成重启。这个方法聪明多了。 - Datbates

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接