CPU & MEM pprof output #12
This commit is contained in:
parent
c37e8c947b
commit
44a3923878
35
main.go
35
main.go
|
@ -4,6 +4,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
"runtime/pprof"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -26,6 +27,11 @@ func main() {
|
||||||
|
|
||||||
logger.Info("godns %s start", settings.Version)
|
logger.Info("godns %s start", settings.Version)
|
||||||
|
|
||||||
|
if settings.Debug {
|
||||||
|
go profileCPU()
|
||||||
|
go profileMEM()
|
||||||
|
}
|
||||||
|
|
||||||
sig := make(chan os.Signal)
|
sig := make(chan os.Signal)
|
||||||
signal.Notify(sig, os.Interrupt)
|
signal.Notify(sig, os.Interrupt)
|
||||||
|
|
||||||
|
@ -40,6 +46,35 @@ forever:
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func profileCPU() {
|
||||||
|
f, err := os.Create("godns.cprof")
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("%s", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
pprof.StartCPUProfile(f)
|
||||||
|
time.AfterFunc(6*time.Minute, func() {
|
||||||
|
pprof.StopCPUProfile()
|
||||||
|
f.Close()
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func profileMEM() {
|
||||||
|
f, err := os.Create("godns.mprof")
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("%s", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
time.AfterFunc(5*time.Minute, func() {
|
||||||
|
pprof.WriteHeapProfile(f)
|
||||||
|
f.Close()
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
func initLogger() {
|
func initLogger() {
|
||||||
logger = NewLogger()
|
logger = NewLogger()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue