Под нагрузкой сервис не может открыть соединение к 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
