diff --git a/pkg/debugutil/pprof.go b/pkg/debugutil/pprof.go index 2e87124b8..8d5544a3d 100644 --- a/pkg/debugutil/pprof.go +++ b/pkg/debugutil/pprof.go @@ -17,12 +17,19 @@ package debugutil import ( "net/http" "net/http/pprof" + "runtime" ) const HTTPPrefixPProf = "/debug/pprof" // PProfHandlers returns a map of pprof handlers keyed by the HTTP path. func PProfHandlers() map[string]http.Handler { + // set only when there's no existing setting + if runtime.SetMutexProfileFraction(-1) == 0 { + // 1 out of 5 mutex events are reported, on average + runtime.SetMutexProfileFraction(5) + } + m := make(map[string]http.Handler) m[HTTPPrefixPProf+"/"] = http.HandlerFunc(pprof.Index) @@ -34,6 +41,7 @@ func PProfHandlers() map[string]http.Handler { m[HTTPPrefixPProf+"/goroutine"] = pprof.Handler("goroutine") m[HTTPPrefixPProf+"/threadcreate"] = pprof.Handler("threadcreate") m[HTTPPrefixPProf+"/block"] = pprof.Handler("block") + m[HTTPPrefixPProf+"/mutex"] = pprof.Handler("mutex") return m }