1
0
mirror of https://github.com/astaxie/beego.git synced 2024-12-22 17:20:50 +00:00

add pprof support

This commit is contained in:
xiemengjun 2012-12-27 22:27:26 +08:00
parent d80ba7b084
commit c967f2d63f
2 changed files with 33 additions and 0 deletions

View File

@ -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()
}

22
pprof.go Normal file
View File

@ -0,0 +1,22 @@
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)
}
}