Я работаю над простым микросервисом, написанным в Spring Boot. Эта услуга будет действовать как прокси-сервер в отношении других ресурсов, которые имеют жесткий параллельный лимит подключения, и запросы требуют времени для обработки.Ограничения жесткого ограничения Весенняя загрузка
Я хотел бы наложить жесткие ограничения на одновременные подключения, разрешенные для моего микросервиса, и отклонить их либо с помощью уровня 503, либо на уровне tcp/ip. Я попытался изучить различные конфигурации, которые могут быть сделаны для Jetty/Tomcat/Undertow, но пока не понял что-то совершенно убедительное.
Я нашел некоторые параметры, регулирующие пулы:
- server.tomcat.max-темы = 0 # Максимальное количество рабочих потоков.
- server.undertow.io-threads = # Количество потоков ввода-вывода для создания для рабочего.
- server.undertow.worker-threads = # Количество рабочих потоков.
- server.jetty.acceptors = # Количество потоков акцепторов для использования.
- server.jetty.selectors = # Количество селекторных потоков для использования.
Но если вы правильно понимаете, все они настраивают размеры пула потоков и приведут к тому, что соединения будут поставлены в очередь на каком-то уровне.
Это кажется очень интересным, но это еще не были объединены в еще и предназначен для Spring ботинке 1.5, https://github.com/spring-projects/spring-boot/pull/6571
Am I повезло, используя установку для сейчас? Я мог бы, конечно, реализовать фильтр, но скорее блокировал бы его на более раннем уровне и не должен был изобретать колесо. Я предполагаю, что использование apache или что-то еще впереди также является вариантом, но все же это похоже на перебор.
Jetty имеет '' QoSFilter' и DoSFilter' для этих видов ограничений подключения (Наступающий Jetty 9.4.x будет иметь больше возможностей). –
Я посмотрел на DoSFilter, но я не могу найти какой-либо параметр, который фактически ограничивает количество параллельных/текущих запросов. Я что-то упускаю? – user1293081