Как выяснить, включена ли функция поддержки активности для конечной точки в Spring Boot? - PullRequest
4 голосов
/ 20 февраля 2020

У меня есть приложение Spring Boot с несколькими конечными точками, объявленными так:

@RestController
public class MyRestController {

    @PostMapping("/someRequest")
    public void doSomething(final @RequestBody MyRequest request) {
       // ...
    }

}

Как узнать, включен ли сокет, используемый этим контроллером, TCP keepalive или нет?

Обновление 1: Я запустил приложение с libdontd ie, то есть sudo DD_DEBUG=1 DD_TCP_KEEPALIVE_TIME=4 DD_TCP_KEEPALIVE_INTVL=5 DD_TCP_KEEPALIVE_PROBES=6 LD_PRELOAD=/usr/lib/libdontdie.so java -jar myapp.jar --spring.config.location=myapp-config.yaml &. Нужно подождать до завтра, чтобы посмотреть, работает ли он.

Ответы [ 2 ]

2 голосов
/ 04 марта 2020

Вполне возможно, что происходит одно из следующего. Это может быть не связано с keepalive.

Причина

  1. Ваш ресурс AWS находится в состоянии холодного запуска или находится в режиме гибернации из-за неактивного процессора. Это может быть связано с тем, что AWS
  2. Ваша конечная точка /someRequest зависит от некоторых нисходящих ресурсов, таких как база данных, другая служба покоя, или может быть связана с тем, что ввод-вывод находится в состоянии ожидания.
  3. Если он подключается к базе данных, убедитесь, что у вас включено переподключение. Это может зависеть от того, как вы настроили соединение. См. Spring теряет соединение с БД и не восстанавливает или не переподключает , чтобы узнать, как это сделать в вашей ситуации.

Рекомендация по разрешению

  1. Проверьте работоспособность экземпляра на консоли AWS и посмотрите, не достиг ли он IDLE. Попробуйте перевести узел в состояние IDLE.
  2. С помощью Spring Boot Actuator включите тест на работоспособность зависимостей в нисходящем направлении и убедитесь, что ваше здоровье исправно перед выполнением любого вызова API. Смотрите, https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-features.html
  3. Я не хочу рекомендовать это, но все ваши параметры dry затем создайте фиктивную конечную точку, такую ​​как /info или /health, и продолжайте опрашивать ее. периодически. Это не очень хорошее решение, но в большинстве случаев оно будет работать.
0 голосов
/ 08 марта 2020

Опрос - это решение. Продолжайте опрашивать после определенного интервала c.

...