Net Core 3.1 IHttpClientFactory / HttpClient медленно при первом запросе - PullRequest
1 голос
/ 13 июля 2020

У меня есть приложение. Net Core 3.1. В приложении я использую IHttpClientFactory для создания HttpClient. Когда я звоню с помощью SendAsyn c, первый запрос занимает более 2 секунд, тогда как последующие запросы занимают менее 100 мс. Это неприемлемая производительность для производственного приложения.

Я также заметил, что это происходит, если я какое-то время не делаю никаких запросов. Я наткнулся на свойство PooledConnectionIdleTimeout, которое по умолчанию составляет 2 минуты, и я могу продлить это время, но это будет работать только для уже существующих объединенных соединений, а не при необходимости создания нового. Я настраиваю HttpClient в моем Startup.cs как таковой:

 services.AddHttpClient("HttpClient",
            h =>
            {
                h.BaseAddress = new Uri(Configuration["PythonUrl"]);
            });

Используйте HttpClient следующим образом:

 var client = httpClientFactory.CreateClient("HttpClient");
 var res = await client.GetAsync(nameof(Accounts).ToLower() + "/" + id.ToString() + "/");

, когда "Configuration [" PythonUrl "]" содержит P C имя, например:

{
  "AllowedHosts": "*",
  "PythonUrl": "http://PC202003261059:8000/",
  "url": "http://*:5000"
}

Первый запрос HttpClient стал очень медленным. Может ли кто-нибудь оказать мне услугу? Сначала спасибо.

...