我对我无法分析golang程序的问题感到困惑,我在/ debug / pprof下有所有其他端点,但没有/ debug / pprof / profile用于CPU分析 有没有人偶然发现过这样的问题?
go tool pprof http://localhost:7778/debug/pprof/profile
Fetching profile from http://localhost:7778/debug/pprof/profile
Please wait... (30s)
server response: 404 Not Found
而
/debug/pprof/
profiles:
19 block
31 goroutine
10 heap
0 mutex
11 threadcreate
full goroutine stack dump
我以这种方式设置分析
r := http.NewServeMux()
r.Handle("/debug/pprof/", http.HandlerFunc(pprof.Index))
可能是什么原因?
更新:正在运行
http.ListenAndServe("localhost:4444", nil)
(即启动默认的http服务器)修复了我的自定义端点
的问题答案 0 :(得分:1)
找到它,我没有在init中注册所有处理程序 https://golang.org/src/net/http/pprof/pprof.go
答案 1 :(得分:0)
我偶然发现了与您相同的错误,我已经根据文档进行了全部注册。如果有人遇到相同的问题,原来您需要添加http.DefaultServeMux
,因此完整的行应为:
r := mux.NewRouter() r.PathPrefix("/debug/").Handler(http.DefaultServeMux) r.HandleFunc("/debug/pprof/", pprof.Index) r.HandleFunc("/debug/pprof/cmdline", pprof.Cmdline) r.HandleFunc("/debug/pprof/profile", pprof.Profile) r.HandleFunc("/debug/pprof/symbol", pprof.Symbol) r.HandleFunc("/debug/pprof/trace", pprof.Trace)
引用为here