В ASP.NET (ASP.NET) Core под нагрузкой наблюдается socket exhaustion (много TIME_WAIT/CLOSE_WAIT). Используется IHttpClientFactory. Код упрощённо такой:
var resp = await client.GetAsync(url);
var body = await resp.Content.ReadAsStringAsync();
return body;
👾 — Добавить ConfigureAwait(false) на все await
👍 — Создавать новый HttpClient на каждый запрос
🥰 — Гарантированно освобождать ответ/поток: using var resp = await client.SendAsync(req, HttpCompletionOption.ResponseHeadersRead, ct); await using var s = await resp.Content.ReadAsStreamAsync(ct); ... — чтобы соединение вернулось в пул
⚡️ — Просто поднять MaxConnectionsPerServer у SocketsHttpHandler
🐸Библиотека задач по C#
Post #1683
415