Commit c967f2d6 authored by xiemengjun's avatar xiemengjun

add pprof support

parent d80ba7b0
...@@ -16,6 +16,7 @@ var ( ...@@ -16,6 +16,7 @@ var (
HttpPort int HttpPort int
RecoverPanic bool RecoverPanic bool
AutoRender bool AutoRender bool
PprofOn bool
ViewsPath string ViewsPath string
RunMode string //"dev" or "prod" RunMode string //"dev" or "prod"
AppConfig *Config AppConfig *Config
...@@ -35,6 +36,7 @@ func init() { ...@@ -35,6 +36,7 @@ func init() {
RunMode = "prod" //default runmod RunMode = "prod" //default runmod
AutoRender = true AutoRender = true
RecoverPanic = true RecoverPanic = true
PprofOn = false
ViewsPath = "views" ViewsPath = "views"
} else { } else {
HttpAddr = AppConfig.String("httpaddr") HttpAddr = AppConfig.String("httpaddr")
...@@ -59,6 +61,11 @@ func init() { ...@@ -59,6 +61,11 @@ func init() {
} else { } else {
RecoverPanic = ar RecoverPanic = ar
} }
if ar, err := AppConfig.Bool("pprofon"); err != nil {
PprofOn = false
} else {
PprofOn = ar
}
if views := AppConfig.String("viewspath"); views == "" { if views := AppConfig.String("viewspath"); views == "" {
ViewsPath = "views" ViewsPath = "views"
} else { } else {
...@@ -147,5 +154,9 @@ func FilterPrefixPath(path string, filter http.HandlerFunc) *App { ...@@ -147,5 +154,9 @@ func FilterPrefixPath(path string, filter http.HandlerFunc) *App {
} }
func Run() { func Run() {
if PprofOn {
BeeApp.RegisterController(`/debug/pprof`, &ProfController{})
BeeApp.RegisterController(`/debug/pprof/:pp([\w+])`, &ProfController{})
}
BeeApp.Run() BeeApp.Run()
} }
package beego
import (
"net/http/pprof"
)
type ProfController struct {
Controller
}
func (this *ProfController) Get() {
ptype := this.Ctx.Params[":pp"]
if ptype == "" {
pprof.Index(this.Ctx.ResponseWriter, this.Ctx.Request)
} else if ptype == "cmdline" {
pprof.Cmdline(this.Ctx.ResponseWriter, this.Ctx.Request)
} else if ptype == "profile" {
pprof.Profile(this.Ctx.ResponseWriter, this.Ctx.Request)
} else if ptype == "symbol" {
pprof.Symbol(this.Ctx.ResponseWriter, this.Ctx.Request)
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment