summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config.go1
-rw-r--r--contrib/config.example.edn1
-rw-r--r--main.go19
3 files changed, 21 insertions, 0 deletions
diff --git a/config.go b/config.go
index b64b574..05235c5 100644
--- a/config.go
+++ b/config.go
@@ -11,6 +11,7 @@ import (
type Config struct {
HTTP HTTPConfig `edn:"http"`
+ Pprof HTTPConfig `edn:"pprof"`
CGit CGitConfig `edn:"cgit"`
Git GitConfig `edn:"git"`
ReposRoot string `edn:"repos-root"`
diff --git a/contrib/config.example.edn b/contrib/config.example.edn
index b66317f..41f7cee 100644
--- a/contrib/config.example.edn
+++ b/contrib/config.example.edn
@@ -1,5 +1,6 @@
; Example configuration for cgit-httpd for Debian.
{:http {:port 8080}
+ :pprof {:host "127.0.0.1" :port 8181}
:repos-root "/srv/git"
:cgit {:cgi "/usr/lib/cgit/cgit.cgi"
:config-file "/etc/cgitrc" ; See cgitrc(5).
diff --git a/main.go b/main.go
index e47d311..6923554 100644
--- a/main.go
+++ b/main.go
@@ -7,6 +7,7 @@ import (
"flag"
"net"
"net/http"
+ "net/http/pprof"
"os"
"strconv"
"time"
@@ -68,6 +69,24 @@ func main() {
},
})
+ if cfg.Pprof.Port != 0 {
+ 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)
+
+ m.Add(&server.Server{
+ Name: "pprof",
+ Server: &http.Server{
+ Addr: net.JoinHostPort(cfg.Pprof.Host, strconv.Itoa(cfg.Pprof.Port)),
+ Handler: mux,
+ },
+ })
+ }
+
if err := m.Start(signals.SetupSignalHandler()); err != nil {
logger.Info().Err(err).Msg("manager stopped")
}