Почему использование одного HTTPClient, а не создание нового клиента для каждого запроса, сильно замедляет мой API? - PullRequest
1 голос
/ 13 мая 2019

Я создаю шлюз для другого API с помощью веб-API .Net core 2. Другой сервис, с которым я взаимодействую, имеет 5 функций, для каждой из которых требуются команды post / get.В попытке улучшить высокую задержку я убедился, что вместо создания нового HTTP-клиента в операторе использования для каждого запроса я буду использовать одноэлементный HTTP-клиент.Я заметил, что после этой реализации мои запросы заняли гораздо больше времени.

- Post request
    * 800 ms, when creating new http client with each request
    * 2000 ms, when using single http client
- Get request
    * 1200 ms, when creating new http client with each request
    * 2200 ms, when using single http client

1 Ответ

0 голосов
/ 13 мая 2019

К сожалению, в вашем вопросе недостаточно информации, чтобы ответить на этот вопрос конкретно

Но в целом рекомендуется использовать один статический HttpClient

https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/implement-resilient-applications/use-httpclientfactory-to-implement-resilient-http-requests

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

.Net ядро ​​поддерживает HttpClientFactory для управления этим, что я бы профилировал для вашего сценария

...