Под нагрузкой сервис упирается в лимит открытых файлов
resp, err := client.Get(pricesURL)
if err != nil {
return err
}
if resp.StatusCode != http.StatusOK {
return fmt.Errorf("prices: status %d", resp.StatusCode)
}
defer resp.Body.Close()
Когда сервис цен отвечает ошибками, через несколько минут появляется too many open files. Где ошибка?
- При ответе не 200 тело не закрывается
- defer нужно заменить на прямой вызов Close
- client.Get не переиспользует соединения
- Лимит открытых файлов в контейнере слишком мал
