Tomcat的启动失败,与OOM

问题描述 投票:0回答:1

Tomcat的启动失败与OOM即使有足够的内存系统,并适当提供所有所需的内存设置。这不是一直发生,这证明存在与tomact配置没有问题。

15-Jan-2019 20:17:31.018 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive /opt/tomcat/webapps/XWY.war has finished in 66,068 ms
15-Jan-2019 20:17:31.192 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [http-nio-61480]
15-Jan-2019 20:17:31.305 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [https-jsse-nio-61443]
15-Jan-2019 20:17:31.362 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 252145 ms
15-Jan-2019 21:49:18.821 SEVERE [125] org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run Unexpected death of background thread ContainerBackgroundProcessor[StandardEngine[Catalina]]
 java.lang.OutOfMemoryError: Java heap space
    at java.util.TreeMap.put(TreeMap.java:577)
    at java.util.TreeSet.add(TreeSet.java:255)
    at java.util.AbstractCollection.addAll(AbstractCollection.java:344)
    at java.util.TreeSet.addAll(TreeSet.java:312)
    at org.apache.catalina.webresources.Cache.backgroundProcess(Cache.java:185)
    at org.apache.catalina.webresources.StandardRoot.backgroundProcess(StandardRoot.java:601)
    at org.apache.catalina.core.StandardContext.backgroundProcess(StandardContext.java:5564)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1373)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1377)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1377)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1345)
    at java.lang.Thread.run(Thread.java:748)

Tomcat的版本是8.5.8。 Java版本:_JAVA_OPTIONS:-Xms1024m -Xmx3072m OpenJDK的版本 “1.8.0_191” 的OpenJDK运行时环境(建1.8.0_191-B12)OpenJDK的64位服务器VM(建立25.191-B12,混合模式)。

tomcat web out-of-memory
1个回答
1
投票

从总结的意见,以及这里一些额外的步骤一些技巧。任何人都无法给你最终的答案,为什么你得到一个OOME,你需要深入到它自己:

  • 一个可能的拼写错误:请确保它不是那么简单:你提到JAVA_OPTIONS,但它会是JAVA_OPTS。嗯,事实上,它甚至不是说:
  • 为Tomcat具体做法是:使用CATALINA_OPTSJAVA_OPTS代替。此只设置存储器,用于启动Tomcat,且需要较少的存储器来运行(例如)关闭过程。
  • 设置-Xms-Xmx为相同的值:如果计划最终提供-Xmx内存,你还不如确保当您启动过程Java可以分配内存。否则,你可能会在凌晨3点在周日晚上碰上不可用OS-内存。
  • 连接到与jconsole或类似工具你正在运行的进程,找出存储器图案:它看起来像一个不断增加的内存使用情况?您的应用程序可能存在内存泄漏。
  • 您的应用程序运行分析器,以确定潜在的内存泄漏

奇怪的是,我无法找到文档如何解决OOME计算器上的规范问题 - 我的初衷是建议关闭此为重复。

© www.soinside.com 2019 - 2024. All rights reserved.