Ответ
Для подбора таймаута учитывайте SLA сервиса, сетевые условия и бизнес-требования.
Рекомендации:
- ConnectTimeout: 1-5 секунд (ожидание установки соединения)
- 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