AdGuardHome/internal/home/pprof.go
Ainar Garipov b1120221c7 Pull request 1805: imp-pprof
Merge in DNS/adguard-home from imp-pprof to master

Squashed commit of the following:

commit 2d56e0820fd26720c87978d0096405257100f3f3
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date:   Thu Apr 6 15:10:12 2023 +0300

    home: imp rate

commit 97611a26e224f354d42ea16f3193c6cb72de3a48
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date:   Thu Apr 6 15:03:33 2023 +0300

    home: imp pprof block, mutex profiles
2023-04-06 15:14:30 +03:00

40 lines
1.1 KiB
Go

package home
import (
"net/http"
"net/http/pprof"
"runtime"
"github.com/AdguardTeam/golibs/log"
)
// startPprof launches the debug and profiling server on addr.
func startPprof(addr string) {
runtime.SetBlockProfileRate(1)
runtime.SetMutexProfileFraction(1)
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)
// See profileSupportsDelta in src/net/http/pprof/pprof.go.
mux.Handle("/debug/pprof/allocs", pprof.Handler("allocs"))
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/mutex", pprof.Handler("mutex"))
mux.Handle("/debug/pprof/threadcreate", pprof.Handler("threadcreate"))
go func() {
defer log.OnPanic("pprof server")
log.Info("pprof: listening on %q", addr)
err := http.ListenAndServe(addr, mux)
log.Info("pprof server errors: %v", err)
}()
}