Ответ
Да, работал с pprof — стандартным профилировщиком Go. Использовал его для анализа CPU, памяти и блокировок.
Пример CPU профилирования:
import _ "net/http/pprof"
go func() {
log.Println(http.ListenAndServe(":6060", nil))
}()
// Затем собираем профиль:
// go tool pprof http://localhost:6060/debug/pprof/profile?seconds=30
Анализ аллокаций:
import "runtime/pprof"
f, _ := os.Create("heap.pprof")
pprof.WriteHeapProfile(f)
f.Close()
Для визуализации удобно использовать go tool pprof -http=:8080 profile.out.