From 8c917f6baedc756b3f18a36952c166de20ed9c69 Mon Sep 17 00:00:00 2001 From: Michael Li Date: Wed, 11 Feb 2026 10:01:23 -0500 Subject: [PATCH] chore: pprof build updates (#6419) * chore: Ensure Admin UI is included in pprof build Co-authored-by: ddedbko * chore: Isolate handlers for pprof endpoints Co-authored-by: ddebko --------- Co-authored-by: ddedbko --- Makefile | 1 + internal/cmd/base/pprof_on.go | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 5b532c530..a0ad907fc 100644 --- a/Makefile +++ b/Makefile @@ -67,6 +67,7 @@ install-no-plugins: install .PHONY: build-pprof build-pprof: BUILD_TAGS+=pprof +build-pprof: BUILD_TAGS+=ui build-pprof: @echo "==> Building Boundary with memory pprof enabled" @CGO_ENABLED=$(CGO_ENABLED) BUILD_TAGS='$(BUILD_TAGS)' sh -c "'$(CURDIR)/scripts/build.sh'" diff --git a/internal/cmd/base/pprof_on.go b/internal/cmd/base/pprof_on.go index 3ec611230..831ba843d 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()) } }()