Как подбирать значение таймаута для запроса

«Как подбирать значение таймаута для запроса» — вопрос из категории Сети, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для подбора таймаута учитывайте SLA сервиса, сетевые условия и бизнес-требования.

Рекомендации:

  1. ConnectTimeout: 1-5 секунд (ожидание установки соединения)
  2. ReadTimeout: 5-30 секунд (ожидание ответа после соединения)

Пример настройки в Go:

client := http.Client{
    Timeout: 10 * time.Second, // общий таймаут
    Transport: &http.Transport{
        DialContext: (&net.Dialer{
            Timeout:   2 * time.Second, // таймаут соединения
        }).DialContext,
    },
}

Советы:

  • Мониторьте 95-й перцентиль времени ответа сервиса
  • Добавляйте retry с экспоненциальным откатом для временных ошибок
  • Для критичных запросов используйте контексты с Deadline