Tomcat не может начать с OOM - PullRequest
       17

Tomcat не может начать с OOM

0 голосов
/ 06 февраля 2019

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) 64-разрядная серверная виртуальная машина OpenJDK (сборка 25.191-b12, смешанный режим).

1 Ответ

0 голосов
/ 06 февраля 2019

Обобщая некоторые приемы из комментариев, а также некоторые дополнительные шаги здесь.Никто не сможет дать вам окончательный ответ о том, почему вы получаете OOME, вам нужно погрузиться в него самостоятельно:

  • Возможная опечатка: убедитесь, что это не так просто:Вы упоминаете JAVA_OPTIONS, но это будет JAVA_OPTS.Ну, на самом деле дело даже не в этом:
  • В частности, для tomcat: используйте CATALINA_OPTS вместо JAVA_OPTS.Это только устанавливает память для запуска Tomcat и требует меньше памяти для запуска (например) процесса выключения.
  • Установите -Xms и -Xmx на то же значение : если выпланируя предоставить -Xmx память в конечном итоге, вы также можете убедиться, что Java может выделить память , пока вы запускаете процесс.В противном случае вы можете столкнуться с недоступной ОС-памятью в воскресенье вечером в 3 часа утра. * 10101
  • Подключитесь к запущенному процессу с помощью jconsole или аналогичного инструмента, определите шаблон памяти: он выглядит как постоянно увеличивающаяся памятьиспользование?У вашего приложения может быть утечка памяти.
  • Запустите в вашем приложении профилировщик, чтобы определить потенциальные утечки памяти

Как ни странно, я не нашел канонического вопроса о стековом потоке, который документирует, какрешать OOME - мое первоначальное намерение было предложить закрыть это как дубликат.

...