Вступить в клуб →
лёгкаявопросHTTP-клиенты, серверы и gRPC

Провайдер SMS завис, и число горутин сервиса выросло до сотен тысяч

func sendSMS(phone, text string) error {
    resp, err := http.Post(smsURL, "application/json", body(phone, text))
    if err != nil {
        return err
    }
    defer resp.Body.Close()
    return nil
}

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

  • У стандартного клиента нет таймаута, запросы ждут вечно
  • defer закрывает тело ответа слишком поздно
  • http.Post нельзя вызывать из нескольких горутин
  • Провайдер SMS должен сам разрывать соединение

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

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

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

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