Ответ
Проверю профилирование (pprof) для выявления узких мест. Пример:
import _ "net/http/pprof"
go func() {
log.Println(http.ListenAndServe(":6060", nil))
}()
Основные направления анализа:
- CPU-bound:
go tool pprof http://localhost:6060/debug/pprof/profile - Memory:
go tool pprof http://localhost:6060/debug/pprof/heap - Goroutines:
go tool pprof http://localhost:6060/debug/pprof/goroutine
Частые проблемы:
- Неоптимальные алгоритмы (O(n²) вместо O(n))
- Избыточные аллокации (используем sync.Pool)
- Блокировки (мутексы, каналы)
- Долгие внешние вызовы (базы, API)
После выявления проблемы - оптимизация или горизонтальное масштабирование.