1.Write code (add following code in httpserver NewServer function .)
Import "net/http/pprof"
func NewServer(port string, srv service.Service) *http.Server {
handler := handler{
&logic{
srv,
},
}
mux := http.NewServeMux()
// Register our handler for the / route
mux.Handle("/", handler)
// Add the pprof routes
mux.HandleFunc("/debug/pprof/", pprof.Index)
mux.HandleFunc("/debug/pprof/cmdline", pprof.Cmdline)
mux.HandleFunc("/debug/pprof/profile", pprof.Profile)
mux.HandleFunc("/debug/pprof/symbol", pprof.Symbol)
mux.HandleFunc("/debug/pprof/trace", pprof.Trace)
mux.Handle("/debug/pprof/block", pprof.Handler("block"))
mux.Handle("/debug/pprof/goroutine", pprof.Handler("goroutine"))
mux.Handle("/debug/pprof/heap", pprof.Handler("heap"))
mux.Handle("/debug/pprof/threadcreate", pprof.Handler("threadcreate"))
h2s := &http2.Server{}
return &http.Server{
Addr: port,
Handler: h2c.NewHandler(mux, h2s),
}
}
2. Export service port (eg: kubectl port-forward pod/yourpodname 10000:9001 )
3. go tool pprof http://localhost:10000/debug/pprof/profile
4. Run case
5. Input "help" to show commands in pprof tool . And input "kcachegrind" to show profiling .(precondition: kcachegrind has been installed .[install command : sudo apt-get install kcachegrind])