From 44a3923878249d43df41fab0358dcf9663221e63 Mon Sep 17 00:00:00 2001 From: kenshinx Date: Wed, 14 Oct 2015 15:21:21 +0800 Subject: [PATCH] CPU & MEM pprof output #12 --- main.go | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/main.go b/main.go index 3e2ac77..2fbef68 100644 --- a/main.go +++ b/main.go @@ -4,6 +4,7 @@ import ( "os" "os/signal" "runtime" + "runtime/pprof" "time" ) @@ -26,6 +27,11 @@ func main() { logger.Info("godns %s start", settings.Version) + if settings.Debug { + go profileCPU() + go profileMEM() + } + sig := make(chan os.Signal) 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() { logger = NewLogger()