func (s *server) signalToggleTrace() { if s.traceFile == nil { traceFile, err := ioutil.TempFile("", common.ProductName+"_Trace_") if goshawk.CheckWarn(err) { return } if goshawk.CheckWarn(trace.Start(traceFile)) { return } s.traceFile = traceFile log.Println("Tracing started in", traceFile.Name()) } else { trace.Stop() if !goshawk.CheckWarn(s.traceFile.Close()) { log.Println("Tracing stopped in", s.traceFile.Name()) } s.traceFile = nil } }
func (s *server) signalToggleCpuProfile() { if s.profileFile == nil { memFile, err := ioutil.TempFile("", common.ProductName+"_Mem_Profile_") if goshawk.CheckWarn(err) { return } if goshawk.CheckWarn(pprof.Lookup("heap").WriteTo(memFile, 0)) { return } if !goshawk.CheckWarn(memFile.Close()) { log.Println("Memory profile written to", memFile.Name()) } profFile, err := ioutil.TempFile("", common.ProductName+"_CPU_Profile_") if goshawk.CheckWarn(err) { return } if goshawk.CheckWarn(pprof.StartCPUProfile(profFile)) { return } s.profileFile = profFile log.Println("Profiling started in", profFile.Name()) } else { pprof.StopCPUProfile() if !goshawk.CheckWarn(s.profileFile.Close()) { log.Println("Profiling stopped in", s.profileFile.Name()) } s.profileFile = nil } }