diff --git a/internal/cmd/base/pprof_on.go b/internal/cmd/base/pprof_on.go index 7c12a47e65..3a23395fdf 100644 --- a/internal/cmd/base/pprof_on.go +++ b/internal/cmd/base/pprof_on.go @@ -10,18 +10,29 @@ import ( "context" "errors" "net/http" + "net/http/pprof" "github.com/hashicorp/boundary/internal/event" - - _ "net/http/pprof" ) func StartPprof(ctx context.Context) { const op = "base.StartPprof" go func() { const addr = "localhost:6060" + mux := http.NewServeMux() + 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")) + mux.Handle("/debug/pprof/mutex", pprof.Handler("mutex")) + mux.Handle("/debug/pprof/allocs", pprof.Handler("allocs")) event.WriteSysEvent(ctx, op, "starting pprof HTTP server", "addr", addr) - if err := http.ListenAndServe(addr, nil); err != nil && !errors.Is(err, http.ErrServerClosed) { + if err := http.ListenAndServe(addr, mux); err != nil && !errors.Is(err, http.ErrServerClosed) { event.WriteSysEvent(ctx, op, "failed to serve pprof HTTP server", "error", err.Error()) } }()