Spring WebFlux WebClient - это клиентский API-интерфейс HTTP, который обертывает фактические библиотеки HTTP - поэтому настройки, такие как управление подключениями, тайм-ауты и т. Д., Настраиваются непосредственно на уровне библиотеки, и поведение может изменяться в зависимости от выбранной библиотеки.
Библиотека по умолчанию с WebClient: Reactor Netty .
Многие HTTP-клиенты (и это в случае с Reactor Netty) поддерживают HTTP-соединения в пуле соединений для их повторного использования. Клиенты обычно получают новое соединение с удаленным хостом, используют его для отправки / получения информации, а затем помещают обратно в пул соединений. Это очень полезно, так как иногда приобретение нового соединения может быть дорогостоящим. В вашем случае это кажется очень дорогостоящим.
HTTP-клиенты оставляют эти неиспользуемые соединения в пуле, но как насчет времени keepAlive?
Большинство клиентов оставляют эти соединения в пуле как можно дольше и проверяют их, прежде чем запрашивать их, чтобы убедиться, что они все еще действительны, или асинхронно прослушивать события сервера, чтобы удалить их из пула (я полагаю, это делает Reactor Netty). В конечном счете, сервер находится под контролем и решает, когда закрывать соединения, если они неактивны.
Теперь в описании вашей проблемы можно предположить, что подключение к этому удаленному хосту очень дорого, но это также может быть удаленный хост, который может долго отвечать на ваши запросы (например, он может работать в пустом кеше и требует много чего рассчитать).