Поиск причины сбоя приложения Spring Boot
Мое приложение Spring Boot перестало работать пару дней назад, и я пытаюсь выяснить, почему я могу предотвратить его в будущем. Это первый раз, когда это происходит, поэтому я не знаю, с чего начать. Перезапуск сервера решил проблему.
Я запишу все, что считаю уместным, и, надеюсь, кто-то поможет мне с тем, как мне поступить.
- Размещено на капле Digital Ocean.
- Ubuntu 16.04, 1 ГБ ОЗУ, 25 ГБ SSD, 1 ядро.
- HTTP-запросы попадают на отдельный сервер (с той же настройкой), на котором выполняется Nginx, и передаются на вышестоящий сервер, на котором выполняется приложение Spring Boot. Во время сбоя все http-запросы возвращают 502 и регистрируются в error.log Nginx как
2019/04/20 20:06:56 [ошибка] 14576#14576: * Ошибка 1161160 connect() (111: соединение отклонено) при подключении к восходящему потоку, клиент: xx.xxx.x.xxx, сервер: api.example. com, запрос: "OPTIONS /oauth/token HTTP/1.1", восходящий поток: " http://xx.xxx.xx.xxx:8080/oauth/token", хост: "api.example.com", реферер: " https://example.com/login"
2019/04/20 20:06:56 [ошибка] 14576#14576: *1161160 нет прямых трансляций при подключении к апстриму, клиент: xx.xxx.x.xxx, сервер: api.example.com, запрос: "OPTIONS / oauth / token HTTP / 1.1 ", upstream:" http://server_upstream/oauth/token", хост:" api.example.com ", реферер:" https://example.com/login"
- Я был в состоянии SSH на сервер без проблем.
- Я использую log4j2 для входа в приложение Spring Boot, но во время сбоя ничего не было зарегистрировано.
- Отдельный cron на том же сервере, периодически извлекающий данные по HTTP, отлично работал во время сбоя.
- Когда произошел сбой, произошло значительное сокращение используемой памяти сервера (85% -> 18%).
- Я не могу найти соответствующую информацию в системном журнале.
- Приложение Spring Boot запускается в systemd, и (я думаю) приложение Spring Boot все еще работало во время сбоя.
С чего мне начать искать причину сбоя? Могу ли я что-нибудь сделать, чтобы облегчить отладку, если это произойдет снова?
1 ответ
Похоже, ваш Java-процесс не работает. Не могли бы вы предоставить дополнительную информацию:
- команда запуска, если это systemd — служебный файл
- последние журналы
Возможная причина — нехватка памяти, поскольку 1 ГБ — это довольно небольшой объем памяти для веб-приложения Java. Но это зависит от кода и параметров запуска.