From 79dad627f9fe97a3c57609de87a9641a7aae9693 Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Thu, 20 Mar 2025 10:51:13 +0100 Subject: [PATCH] server: add pprof endpoint This adds a pprof endpoint to all SourceHut APIs. It picks an OS-assigned port on localhost to run it on and prints this port to stdout. This ensures a unique port is selected even if several APIs are running on a single host. --- server/server.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/server/server.go b/server/server.go index 833fcc99aba6579c4f3ae3a9a23e017524cebcf2..160ba38e4d6f94b3924ff7993e405a759c5f09ef 100644 --- a/server/server.go +++ b/server/server.go @@ -9,6 +9,7 @@ import ( "log" "net" "net/http" + _ "net/http/pprof" "os" "os/signal" "strconv" @@ -300,6 +301,13 @@ func (server *Server) Run() { log.Printf("Prometheus listening on :%d", plisten.Addr().(*net.TCPAddr).Port) go pserver.Serve(plisten) + pplisten, err := net.Listen("tcp", "localhost:0") + if err != nil { + panic(err) + } + log.Printf("pprof listening on :%d", pplisten.Addr().(*net.TCPAddr).Port) + go http.Serve(pplisten, nil) + sig := make(chan os.Signal, 1) signal.Notify(sig, os.Interrupt) <-sig