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

Сервис просто останавливается

У меня серьезная производственная проблема. Служба, запускающая Java-приложение в OpenJDK, просто останавливается, казалось бы, в случайное время.

При ручном запуске запускается правильно:

sudo /etc/init.d/name start

Но затем, после неизвестного времени, процесса внезапно больше нет. Примерно через 3 часа после запуска в последнем случае.

Вывод консоли перенаправляется в файл журнала. Здесь нет никаких объяснений. Аналогично в журнале приложения (через платформу ведения журнала Java).

В служебном журнале ничего интересного:

journalctl -u name.service

Во всей системе нет файлов отчетов о сбоях Java

sudo find / -name 'hs_err*'

Где еще я могу найти объяснение? Это очень срочно - мы будем благодарны за любую помощь!

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

Вы можете подтвердить это, используя

$ grep -i -A20 "Out of memory" /var/log/syslog

Обычно это происходит по одной из следующих причин на среднем сервере:

  1. Ваше приложение имеет утечку памяти и использует все больше и больше памяти.
  2. Ваше приложение использует слишком много памяти во время обычной работы, но вы только замечаете это, когда ваша платформа виртуализации ограничивает выделенную память до более низкого уровня гарантии.
  3. Другое приложение использует слишком много ОЗУ. Это может быть неправильно настроенный сервер SQL, который использует ваше приложение. Помните: убийца oom не обязательно убивает приложение, которое вызвал ситуация нехватки памяти (скорее та, которая в какой-то степени способствовала этому).

Бинго! 7 ноября 02:00:51 web1 kernel: [2993761.744187] Недостаточно памяти: убить процесс 23861 (java) с результатом 461 или принести в жертву ребенка. Как это контролируется?

Чтобы управлять им, вы выясняете, что вызывает нехватку памяти в системе, и решаете эту проблему. Вам нужно будет установить мониторинг и использовать его. Посмотрите, что делает система, определите процессы, использующие память, а затем выясните, что они делают и почему.