12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- package blademaster
- import (
- "flag"
- "net/http"
- "net/http/pprof"
- "os"
- "sync"
- "go-common/library/conf/dsn"
- "github.com/pkg/errors"
- )
- var (
- _perfOnce sync.Once
- _perfDSN string
- )
- func init() {
- v := os.Getenv("HTTP_PERF")
- if v == "" {
- v = "tcp://0.0.0.0:2333"
- }
- flag.StringVar(&_perfDSN, "http.perf", v, "listen http perf dsn, or use HTTP_PERF env variable.")
- }
- func startPerf() {
- _perfOnce.Do(func() {
- 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)
- go func() {
- d, err := dsn.Parse(_perfDSN)
- if err != nil {
- panic(errors.Errorf("blademaster: http perf dsn must be tcp://$host:port, %s:error(%v)", _perfDSN, err))
- }
- if err := http.ListenAndServe(d.Host, mux); err != nil {
- panic(errors.Errorf("blademaster: listen %s: error(%v)", d.Host, err))
- }
- }()
- })
- }
|