> Как подбирать тайм-ауты для backend взаимодействия, например HTTP запросов (Go)
Уровень: senior · Роль: backend · Язык: Go · Категория: Технические вопросы
Компании: Avito
Стек: Go
> Пример ответа
Подбор тайм-аутов для HTTP-запросов в Go - это баланс между надёжностью и производительностью. Основные принципы:
-
Используйте контекст (context) с тайм-аутом - это стандартный способ в Go. Например:
GOctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)defer cancel()req, _ := http.NewRequestWithContext(ctx, "GET", url, nil) -
Устанавливайте тайм-аут на уровне клиента - через
http.Client.Timeout(общий лимит на весь запрос, включая чтение ответа). Для более тонкого контроля используйтеTransport:DialContext- тайм-аут соединения (обычно 1-3 сек)TLSHandshakeTimeout- 2-5 секResponseHeaderTimeout- 5-10 секIdleConnTimeout- для keep-alive (30-90 сек)
-
Определяйте тайм-ауты на основе SLA:
- Для критичных внутренних сервисов: 1-3 секунды
- Для внешних API: 5-10 секунд (с учётом возможных задержек)
- Для batch-операций: до 30 секунд, но с возможностью отмены
-
Учитывайте цепочку вызовов: если ваш сервис вызывает другой, тайм-аут должен быть меньше, чем у вызывающего (например, 2 сек против 5 сек), чтобы не накапливать ожидания.
-
Тестируйте и мониторьте: используйте p99 latency для корректировки. Слишком короткие тайм-ауты вызывают ложные ошибки, слишком длинные - деградацию при сбоях.
Пример настройки:
GOtransport := &http.Transport{DialContext: (&net.Dialer{Timeout: 2 * time.Second}).DialContext,TLSHandshakeTimeout: 3 * time.Second,ResponseHeaderTimeout: 5 * time.Second,}client := &http.Client{Timeout: 10 * time.Second,Transport: transport,}
> Похожие задачи по Go
Какая связь между таблицами людей и адресов в базе данных
Какие требования по шифрованию данных существуют
Какие данные кэшируются и как работает кэширование
Что происходит с персональными данными при обработке
> Похожие задачи по backend
Какая связь между таблицами людей и адресов в базе данных
Какие требования по шифрованию данных существуют
Какие данные кэшируются и как работает кэширование
Что происходит с персональными данными при обработке
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью