// Copyright IBM Corp. 2020, 2026 // SPDX-License-Identifier: BUSL-1.1 //go:build pprof // +build pprof package base import ( "context" "errors" "net/http" "net/http/pprof" "github.com/hashicorp/boundary/internal/event" ) 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, mux); err != nil && !errors.Is(err, http.ErrServerClosed) { event.WriteSysEvent(ctx, op, "failed to serve pprof HTTP server", "error", err.Error()) } }() }