Commit c967f2d6 authored by xiemengjun's avatar xiemengjun

add pprof support

parent d80ba7b0
......@@ -16,6 +16,7 @@ var (
HttpPort int
RecoverPanic bool
AutoRender bool
PprofOn bool
ViewsPath string
RunMode string //"dev" or "prod"
AppConfig *Config
......@@ -35,6 +36,7 @@ func init() {
RunMode = "prod" //default runmod
AutoRender = true
RecoverPanic = true
PprofOn = false
ViewsPath = "views"
} else {
HttpAddr = AppConfig.String("httpaddr")
......@@ -59,6 +61,11 @@ func init() {
} else {
RecoverPanic = ar
}
if ar, err := AppConfig.Bool("pprofon"); err != nil {
PprofOn = false
} else {
PprofOn = ar
}
if views := AppConfig.String("viewspath"); views == "" {
ViewsPath = "views"
} else {
......@@ -147,5 +154,9 @@ func FilterPrefixPath(path string, filter http.HandlerFunc) *App {
}
func Run() {
if PprofOn {
BeeApp.RegisterController(`/debug/pprof`, &ProfController{})
BeeApp.RegisterController(`/debug/pprof/:pp([\w+])`, &ProfController{})
}
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