diff options
Diffstat (limited to '')
-rw-r--r-- | forged/internal/unsorted/config.go | 4 | ||||
-rw-r--r-- | forged/internal/unsorted/server.go | 18 |
2 files changed, 22 insertions, 0 deletions
diff --git a/forged/internal/unsorted/config.go b/forged/internal/unsorted/config.go index 9eae13b..9f07480 100644 --- a/forged/internal/unsorted/config.go +++ b/forged/internal/unsorted/config.go @@ -55,6 +55,10 @@ type Config struct { Type string `scfg:"type"` Conn string `scfg:"conn"` } `scfg:"db"` + Pprof struct { + Net string `scfg:"net"` + Addr string `scfg:"addr"` + } `scfg:"pprof"` } // LoadConfig loads a configuration file from the specified path and unmarshals diff --git a/forged/internal/unsorted/server.go b/forged/internal/unsorted/server.go index 2eb77d3..84379b0 100644 --- a/forged/internal/unsorted/server.go +++ b/forged/internal/unsorted/server.go @@ -11,6 +11,7 @@ import ( "log/slog" "net" "net/http" + _ "net/http/pprof" "os" "os/exec" "path/filepath" @@ -210,6 +211,23 @@ func (s *Server) Run() error { }() } + // Pprof listener + { + pprofListener, err := net.Listen(s.config.Pprof.Net, s.config.Pprof.Addr) + if err != nil { + slog.Error("listening pprof", "error", err) + os.Exit(1) + } + + slog.Info("listening pprof on", "net", s.config.Pprof.Net, "addr", s.config.Pprof.Addr) + go func() { + if err := http.Serve(pprofListener, nil); err != nil { + slog.Error("serving pprof", "error", err) + os.Exit(1) + } + }() + } + s.ircBot = irc.NewBot(&s.config.IRC) // IRC bot go s.ircBot.ConnectLoop() |