Минимальный ресурс для запуска приложения Spring Boot

#amazon-web-services #spring-boot #amazon-ec2 #ubuntu-server

Вопрос:

Я только начинаю тестировать развертывание своего веб-приложения spring boot на AWS. В настоящее время у меня есть t2.micro (1vcpu/1 ГБ), на котором работает сервер Ubuntu, и я упаковал свое приложение в банку fat, используя чистую установку mvn.

Сервер tomcat изначально развертывается нормально, и я могу удаленно получить доступ к своим API, однако через несколько часов (не удалось точно рассчитать время) сервер, похоже, останавливается сам по себе. Я вхожу в экземпляр, и процесс java, похоже, остановился сам по себе.

Команда, которую я использую для запуска jar, является типичной java-jar xxxxx.jar.

Приложение имеет 2 объекта, 2 контроллера, 3 службы. Ничего сложного.

В настоящее время все еще использую h2 в качестве базы данных, так как я просто тестирую некоторые вещи, но база данных инициализируется пустой без данных.

Из того, что я читал в других темах, это звучит как проблема с ООМ. Способствующим фактором является база данных h2, которая является базой данных в памяти.

Тем не менее, это действительно маленькое приложение, и, как уже упоминалось, база данных начинается пустой. Поэтому сомневаюсь, что он потребляет так много оперативной памяти, превышающей несколько 100 мбайт. Простаивающий сервер потребляет ~23% оперативной памяти, ~500 МБ в кэше и ~300 МБ бесплатно.

Кроме того, я не могу найти журналы на сервере, в которых говорится, что процесс java был остановлен из-за OOM. (Я искал в var/журналах/dmesg)

Я еще не пытался развернуть его на чем-то большем, но хотел получить некоторое представление, прежде чем идти в неправильном направлении.

Опубликует мой java — код, если он добавит контекст. Заранее спасибо.

Комментарии:

1. Вы просто входите в систему по SSH и запускаете приложение через сеанс консоли SSH? Если это так, то сеанс, вероятно, истекает и завершает процесс. Вам следует подумать о том, чтобы запустить его в качестве фоновой службы. Настроено ли приложение в настоящее время для входа в консоль? Если это так, вам следует перенаправить вывод консоли в файл журнала при запуске приложения, чтобы позже вы могли просматривать журналы весенней загрузки для таких вещей, как ошибки OOM. Вам также следует проверить показатели экземпляра в CloudWatch, чтобы узнать, исчерпаны ли у вас ресурсы процессора сервера t2 или что-то еще.

2. Да, действительно, это так. Рассмотрит возможность запуска его в качестве фоновой службы и настроит журналы для перехода в файл. Спасибо за предложение. Буду держать эту тему в курсе.

Ответ №1:

Чтобы убедиться, что приложение Spring BOOT работает, вы можете создать FAT JAR, а затем попробовать использовать Elastic Beanstlak, который помещает приложение в экземпляр EC2. Дополнительные сведения см. в этом руководстве по AWS. Он использует различные сервисы AWS, включая DynamoDB. Но вы можете пропустить часть кода и прочитать раздел развертывания:

Создание трекера элементов веб-приложения DynamoDB

См.Переменные среды, которые также необходимо задать.

Комментарии:

1. Спасибо за совет. Приложение действительно работает, когда я развертываю его вручную на своем экземпляре EC2. Просто кажется, что через некоторое время это прекратится. Я попробую предложение Марка выше и посмотрю, не связана ли проблема с сеансом SSH.

2. @fabbbles была ли проблема связана с SSH? Я собираюсь очень скоро развернуть свое собственное приложение spring boot на EC2, и мне очень интересно узнать, что вызвало вашу проблему.