Вступить в клуб →
лёгкаявопросasync/await, многопоточность и фоновые задачи

Под нагрузкой сервис не может открыть соединение к API курсов валют

public async Task<decimal> GetRateAsync(string currency)
{
    using var client = new HttpClient();
    var json = await client.GetStringAsync($"https://rates.example/{currency}");
    return Parse(json);
}

При нагрузке сервис начинает падать с SocketException, а на сервере тысячи соединений в состоянии TIME_WAIT. Что исправить?

  • Получать клиентов через IHttpClientFactory
  • Убрать using, чтобы клиент не освобождался
  • Вызывать GetStringAsync синхронно
  • Увеличить таймаут HttpClient

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела