TGViewer
C# (C Sharp) programming C# (C Sharp) programming @csharp_ci · 18.1K subscribers
Post #1619 5.05K
✔️ Задача C# и ASP.NET Core

В проде под нагрузкой периодически "умирает" интеграция с внешним сервисом оплаты:
в логах всплывают TimeoutException и SocketException: "Only one usage of each socket address...".

Фрагмент кода из сервисного слоя:


public class PaymentClient
{
private readonly string _baseUrl;

public PaymentClient(string baseUrl)
{
_baseUrl = baseUrl;
}

public async Task<bool> ChargeAsync(ChargeRequest request)
{
using var http = new HttpClient();
http.BaseAddress = new Uri(_baseUrl);

var response = await http.PostAsJsonAsync("/charge", request);
return response.IsSuccessStatusCode;
}
}


Под нагрузкой:

- растёт количество TIME_WAIT соединений
- часть запросов получает timeout
- p95 и p99 по этому методу улетают в космос

Какой вариант исправления правильный?

1. Увеличить Timeout у HttpClient и ServicePointManager.DefaultConnectionLimit.
2. Сделать HttpClient статическим полем и переиспользовать его во всех запросах.
3. Зарегистрировать HttpClient через IHttpClientFactory и использовать пул подключений, конфигурируя таймауты и политику повторов.

Как думаешь, какой вариант правильный?
More from @csharp_ci
  1. Oct 2, 2026Post #1891
  2. Sep 29, 2026🖥 C# снова показывает, что «удобный язык = медленный язык» давно не работает. Автор ttfx…
  3. Sep 29, 2026🌦️ Красивый пример того, как может выглядеть современное приложение на Aspire Команда пок…
  4. Sep 27, 2026⚡ .NET 11 ускорили почти везде - от JIT и GC до LINQ и networking Stephen Toub выпустил ог…
  5. Sep 23, 2026🐞 Когда логов недостаточно: дамп памяти из C# Баг возникает только на проде, а локально в…
  6. Sep 21, 2026Awesome Jev - большая подборка инструментов для новой модели TypeSafe AI 🤗 Jev - новая бы…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →