2017-10-10 81 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的问题。