Ответ
Проверяю последовательно:
- Сетевую доступность - ping, traceroute, проверка фаерволов
- Таймауты соединения - сравниваю с конфигом http.Client:
client := &http.Client{
Timeout: 30 * time.Second, // дефолтный 0 - нет таймаута
}
- Логи сервера - ищу медленные запросы, зависшие горутины
- Метрики - CPU, память, goroutine count
- Профилирование при долгих ответах:
import _ "net/http/pprof"
go func() {
log.Println(http.ListenAndServe(":6060", nil))
}()
- Контексты - проверяю не отменяется ли context.WithTimeout раньше времени