mirror of
https://github.com/m1k1o/neko.git
synced 2024-07-24 14:40:50 +12:00
add pprof.
This commit is contained in:
parent
d068698836
commit
89ba775a71
@ -12,6 +12,7 @@ type Server struct {
|
|||||||
Key string
|
Key string
|
||||||
Bind string
|
Bind string
|
||||||
Static string
|
Static string
|
||||||
|
PProf bool
|
||||||
CORS []string
|
CORS []string
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -36,6 +37,11 @@ func (Server) Init(cmd *cobra.Command) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cmd.PersistentFlags().Bool("server.pprof", false, "enable pprof endpoint available at /debug/pprof")
|
||||||
|
if err := viper.BindPFlag("server.pprof", cmd.PersistentFlags().Lookup("server.pprof")); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
cmd.PersistentFlags().StringSlice("server.cors", []string{"*"}, "list of allowed origins for CORS")
|
cmd.PersistentFlags().StringSlice("server.cors", []string{"*"}, "list of allowed origins for CORS")
|
||||||
if err := viper.BindPFlag("server.cors", cmd.PersistentFlags().Lookup("server.cors")); err != nil {
|
if err := viper.BindPFlag("server.cors", cmd.PersistentFlags().Lookup("server.cors")); err != nil {
|
||||||
return err
|
return err
|
||||||
@ -49,6 +55,7 @@ func (s *Server) Set() {
|
|||||||
s.Key = viper.GetString("server.key")
|
s.Key = viper.GetString("server.key")
|
||||||
s.Bind = viper.GetString("server.bind")
|
s.Bind = viper.GetString("server.bind")
|
||||||
s.Static = viper.GetString("server.static")
|
s.Static = viper.GetString("server.static")
|
||||||
|
s.PProf = viper.GetBool("server.pprof")
|
||||||
|
|
||||||
s.CORS = viper.GetStringSlice("server.cors")
|
s.CORS = viper.GetStringSlice("server.cors")
|
||||||
in, _ := utils.ArrayIn("*", s.CORS)
|
in, _ := utils.ArrayIn("*", s.CORS)
|
||||||
|
36
internal/http/debug.go
Normal file
36
internal/http/debug.go
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
package http
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
"net/http/pprof"
|
||||||
|
|
||||||
|
"github.com/go-chi/chi"
|
||||||
|
|
||||||
|
"demodesk/neko/internal/types"
|
||||||
|
)
|
||||||
|
|
||||||
|
func pprofHandler(r types.Router) {
|
||||||
|
r.Get("/debug/pprof/", func(w http.ResponseWriter, r *http.Request) error {
|
||||||
|
pprof.Index(w, r)
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
|
||||||
|
r.Get("/debug/pprof/{action}", func(w http.ResponseWriter, r *http.Request) error {
|
||||||
|
action := chi.URLParam(r, "action")
|
||||||
|
|
||||||
|
switch action {
|
||||||
|
case "cmdline":
|
||||||
|
pprof.Cmdline(w, r)
|
||||||
|
case "profile":
|
||||||
|
pprof.Profile(w, r)
|
||||||
|
case "symbol":
|
||||||
|
pprof.Symbol(w, r)
|
||||||
|
case "trace":
|
||||||
|
pprof.Trace(w, r)
|
||||||
|
default:
|
||||||
|
pprof.Handler(action).ServeHTTP(w, r)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
}
|
@ -57,6 +57,10 @@ func New(WebSocketManager types.WebSocketManager, ApiManager types.ApiManager, c
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if config.PProf {
|
||||||
|
pprofHandler(router)
|
||||||
|
}
|
||||||
|
|
||||||
return &HttpManagerCtx{
|
return &HttpManagerCtx{
|
||||||
logger: logger,
|
logger: logger,
|
||||||
config: config,
|
config: config,
|
||||||
|
Loading…
Reference in New Issue
Block a user