Назад | Перейти на главную страницу

Сервлет, потребляющий память, дает сбой Tomcat

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

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

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

Нет, нет. Вам необходимо либо:

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

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

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