Как предотвратить исключение OutOfMemory в tomcat (ограничение памяти на файл war)? - PullRequest
0 голосов
/ 09 мая 2019

Если на tomcat веб-сервере запущено несколько приложений *.war, и одно из этих приложений вызывает исключение OutOfMemory, это приведет к отключению всего сервера Tomcat.

Вопрос: возможно липредотвратить это?Например, назначить максимальный лимит памяти для каждого файла войны, чтобы только это приложение было закрыто (или перезапущено)?

1 Ответ

1 голос
/ 13 мая 2019

Нет.

Tomcat работает в одной JVM, а веб-приложения совместно используют память, а также все другие ресурсы, включая ЦП, пулы потоков, сетевой ввод-вывод и т. Д.

Самое простое решениеУправление памятью для каждого веб-приложения означает запуск отдельных экземпляров Tomcat.Загрузка этой памяти занимает несколько десятков мегабайт при условии, что вы соответственно уменьшите другие ресурсы.Например, если у вас есть один экземпляр Tomcat с 200 потоками в пуле потоков, и вы разделите его на 4 экземпляра Tomcat, если вы выделите в общей сложности более 200 потоков во всех четырех экземплярах, вам потребуется больше памяти для дополнительных потоков.

Также имейте в виду, что вы будете использовать ресурсы менее эффективно.В одном случае, если одно веб-приложение испытывает всплеск использования, оно может использовать ресурсы (например, потоки), которые другие веб-приложения не используют.Если у каждого веб-приложения есть свой экземпляр, этого не может быть.Это цена, которую вы платите за изоляцию веб-приложений.

...