Сбои в сервлете, занимающие много памяти

У меня есть сервер Tomcat, который обслуживает много веб-приложений, каждый из которых имеет множество сервлетов. Иногда одному сервлету одного веб-приложения не хватает памяти, а затем весь Tomcat падает с ошибкой Java "Out of Memory", и мне приходится перезапускать ее.

Есть ли способ изолировать сервлет, чтобы при запуске памяти он не сбивал все другие приложения?

В настоящее время я запускаю Tomcat 7 в Windows, но вскоре могу перейти на Linux, поэтому ответы на обе платформы приветствуются.

2 ответа

Решение

Нет, нет Вы должны либо:

  1. Хватит так много памяти
  2. Дайте Tomcat больше памяти, или
  3. Установите его в своем собственном экземпляре Tomcat, чтобы при сбое он не забирал другие ваши веб-приложения.

В Linux я видел, что сообщения OOM "обычно", я снова говорю "обычно", указывают на больший объем памяти. Это означает либо увеличение оперативной памяти, либо увеличение пространства подкачки. Первый вариант является предпочтительным.

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

Другие вопросы по тегам