Tomcat正在崩溃,没有出现错误



我在Centos 7 VPS上使用Tomcat 9。这台服务器两年来一直运行良好,但最近却像内存不足一样崩溃了。崩溃发生在新的Tomcat终止并启动后1小时到24小时之间。我还重新启动了我的VPS。我删除了所有应用程序日志,以确保没有达到某些限制。任何日志中都没有错误,我已经阅读了2010年的所有类似问题。

Eclipse MemoryAnalyzer似乎很有希望,所以我在setenv.sh中添加了HeapDumpOnOutOfMemoryError标志,如下所示:

export JAVA_OPTS="-Xms1500m-Xmx1500m-Xs512m-Xmn1000m-XX:+HeapDumpOnOutOfMemoryError";;回声;setenv.sh已设置JAVA_OPTS:$JAVA_OPTS";;

我还将所有mem参数增加了500米。但是,在JVM目录或任何其他目录中都找不到堆文件

我是该网站的唯一用户。在崩溃之间,我恢复主页,以证明TC仍然存在,直到最终崩溃。

TC承载静态内容和两个WAR文件。无论我删除一个或两个WAR,崩溃仍然会发生。我确实更新了我的静态页面,将版权年改为2021年(我通常在一月份做这件事,但今年忘记了(。我已经从备份中提取了原始静态文件,但它仍然崩溃。

有人能就如何追踪这件事提供一些其他想法吗?

在评论中,似乎有一个解决方案,但我对此持怀疑态度:

我建议从JAVA_OPTS切换到CATALINA_OPTS(原因如下(,但这只是一个附带说明。尽管这很有意义,但我不希望它能解决任何问题:Tomcat最终运行时使用完全相同的配置,只是来自不同的环境变量。

我可以想象它修复任何东西(特别是与内存相关的(的唯一方法是当JAVA_OPTSCATALINA_OPTS都声明不匹配的内存参数,并且两者中较低的一个以某种方式获胜。最后,Tomcat启动时将两个参数组合在一起,JVM将只解释其中一个参数(不要问我这是第一个、最后一个还是未定义的(

我推荐的一般方法仍在评论中:首先排除一个接一个的假设——如果您认为自己有内存问题,请监控内存消耗和垃圾收集。如果你期望8GB的堆空间,但你运行的是1GB,这将是显而易见的。或者内存泄漏将是显而易见的。一旦你可以排除内存(因为崩溃发生在内存充足的时候(,就去做下一个假设。

不太具体。。。我想知道这个答案是否真的有助于事后诸葛亮。。。

最新更新