3

当 cpu 达到 100% 时,我的 jvm 会自动重新启动并显示以下错误消息。为什么会发生?

错误:

ERROR | wrapper | 2012/04/05 20:00:31 | Shutdown failed: Timed out waiting for signal from JVM.
ERROR | wrapper | 2012/04/05 20:00:31 | JVM did not exit on request, terminated
STATUS | wrapper | 2012/04/05 20:00:36 | Launching a JVM...
INFO | jvm 4 | 2012/04/05 20:00:38 | WrapperManager: Initializing...
INFO | jvm 4 | 2012/04/05 20:00:43 | Apr 5, 2012 8:00:43 PM org.apache.coyote.http11.Http11BaseProtocol init
    INFO | jvm 4 | 2012/04/05 20:00:43 | INFO: Initializing Coyote HTTP/1.1 on http-8181
    INFO | jvm 4 | 2012/04/05 20:00:43 | Apr 5, 2012 8:00:43 PM org.apache.catalina.startup.Catalina load
    INFO | jvm 4 | 2012/04/05 20:00:43 | INFO: Initialization processed in 2375 ms
    INFO | jvm 4 | 2012/04/05 20:00:43 | Apr 5, 2012 8:00:43 PM org.apache.catalina.core.StandardService start
    INFO | jvm 4 | 2012/04/05 20:00:43 | INFO: Starting service Catalina
    INFO | jvm 4 | 2012/04/05 20:00:43 | Apr 5, 2012 8:00:43 PM org.apache.catalina.core.StandardEngine start
    INFO | jvm 4 | 2012/04/05 20:00:43 | INFO: Starting Servlet Engine: Apache Tomcat/5.5.25
    INFO | jvm 4 | 2012/04/05 20:00:44 | Apr 5, 2012 8:00:44 PM org.apache.catalina.core.StandardHost start
4

2 回答 2

2

这不是正在重新启动的 JVM。您正在使用的包装脚本正在关闭它并重新启动。这就是它的配置方式。看起来您的应用程序占用了大量 CPU。您可以尝试通过堆转储和 GC 日志来查看它是否与垃圾收集器有关。

于 2012-04-06T07:07:16.040 回答
0

根据您的评论,您没有为 Tomcat 指定任何内存配置。我的猜测是 Tomcat 正在使用执行所有请求所需的任何内存。正如我之前所说,Tomcat 在 CPU 达到 100% 之前消耗最大可用内存时应该抛出 PermgenSpace 错误。(然后你当然需要手动重启。)如果为 tomcat server 设置预定义的内存配置,则可以避免这种情况。

此外,如果您正在加载应用程序,<Context>那么指定reloadable="false"也会使 Tomcat 不会自动重新加载上下文。

于 2012-04-06T07:05:03.743 回答