diff --git a/management/cmd/management.go b/management/cmd/management.go index d6735f955..c108e1d0f 100644 --- a/management/cmd/management.go +++ b/management/cmd/management.go @@ -134,6 +134,7 @@ var ( }, RunE: func(cmd *cobra.Command, args []string) error { flag.Parse() + startPprof() ctx, cancel := context.WithCancel(cmd.Context()) defer cancel() diff --git a/management/cmd/root.go b/management/cmd/root.go index 31271a8c6..a77d71b34 100644 --- a/management/cmd/root.go +++ b/management/cmd/root.go @@ -2,9 +2,13 @@ package cmd import ( "fmt" + "net/http" + _ "net/http/pprof" "os" "os/signal" + "runtime" + log "github.com/sirupsen/logrus" "github.com/spf13/cobra" "github.com/netbirdio/netbird/management/server/types" @@ -17,6 +21,17 @@ const ( idpSignKeyRefreshEnabledFlagName = "idp-sign-key-refresh-enabled" ) +func startPprof() { + go func() { + runtime.SetBlockProfileRate(1) + runtime.SetMutexProfileFraction(1) + log.Debugf("Starting pprof server on 0.0.0.0:6060") + if err := http.ListenAndServe("0.0.0.0:6060", nil); err != nil { + log.Fatalf("pprof server failed: %v", err) + } + }() +} + var ( dnsDomain string mgmtDataDir string