Spring Webflux Webclient set Соединение keepAlive time - PullRequest
0 голосов
/ 09 ноября 2018

Только что начал использовать Spring Webflux Webclient, просто хотел узнать, какое время по умолчанию для KeepAlive используется для соединения Http? Есть ли способ увеличить время KeepAlive? В нашей Службе отдыха мы получаем запрос, вероятно, каждые пять минут. Обработка запроса занимает много времени. Это занимает время между 500 секундами - 10 секундами. Однако в нагрузочном тесте, если я посылаю частые запросы, время обработки составляет менее 250 мс.

1 Ответ

0 голосов
/ 09 ноября 2018

Spring WebFlux WebClient - это клиентский API-интерфейс HTTP, который обертывает фактические библиотеки HTTP - поэтому настройки, такие как управление подключениями, тайм-ауты и т. Д., Настраиваются непосредственно на уровне библиотеки, и поведение может изменяться в зависимости от выбранной библиотеки.

Библиотека по умолчанию с WebClient: Reactor Netty .

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

HTTP-клиенты оставляют эти неиспользуемые соединения в пуле, но как насчет времени keepAlive?

Большинство клиентов оставляют эти соединения в пуле как можно дольше и проверяют их, прежде чем запрашивать их, чтобы убедиться, что они все еще действительны, или асинхронно прослушивать события сервера, чтобы удалить их из пула (я полагаю, это делает Reactor Netty). В конечном счете, сервер находится под контролем и решает, когда закрывать соединения, если они неактивны.

Теперь в описании вашей проблемы можно предположить, что подключение к этому удаленному хосту очень дорого, но это также может быть удаленный хост, который может долго отвечать на ваши запросы (например, он может работать в пустом кеше и требует много чего рассчитать).

...