2020-07-06 09:18:16 +00:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"net/http/pprof"
|
|
|
|
|
|
|
|
"github.com/gorilla/mux"
|
|
|
|
"github.com/spf13/viper"
|
2020-07-12 23:00:47 +00:00
|
|
|
"go.uber.org/zap"
|
2020-07-06 09:18:16 +00:00
|
|
|
)
|
|
|
|
|
2020-07-13 09:51:21 +00:00
|
|
|
func attachProfiler(r *mux.Router, v *viper.Viper, l *zap.Logger) {
|
2020-07-07 11:25:13 +00:00
|
|
|
if !v.GetBool(cfgEnableProfiler) {
|
2020-07-06 09:18:16 +00:00
|
|
|
return
|
|
|
|
}
|
|
|
|
|
2020-07-12 23:00:47 +00:00
|
|
|
l.Info("enable profiler")
|
|
|
|
|
2020-07-13 09:51:21 +00:00
|
|
|
profiler := r.PathPrefix(systemPath + "/debug/pprof").
|
|
|
|
Subrouter().
|
|
|
|
StrictSlash(true)
|
|
|
|
|
|
|
|
profiler.HandleFunc("/", pprof.Index)
|
|
|
|
profiler.HandleFunc("/cmdline", pprof.Cmdline)
|
|
|
|
profiler.HandleFunc("/profile", pprof.Profile)
|
|
|
|
profiler.HandleFunc("/symbol", pprof.Symbol)
|
|
|
|
profiler.HandleFunc("/trace", pprof.Trace)
|
|
|
|
|
|
|
|
// Manually add support for paths linked to by index page at /debug/pprof/
|
|
|
|
for _, item := range []string{"allocs", "block", "heap", "goroutine", "mutex", "threadcreate"} {
|
|
|
|
profiler.Handle("/"+item, pprof.Handler(item))
|
|
|
|
}
|
2020-07-06 09:18:16 +00:00
|
|
|
}
|