golang代码中生成pprof和trace报告

// 生成 CPU 报告
import (
"context"
"runtime/pprof"
"log"
) func cpuProfile(ctx context.Context) {
f, err := os.Create("cpu.prof")
if err != nil {
log.Fatal(err)
}
log.Println("CPU Profile started")
pprof.StartCPUProfile(f)
go func(){
select{
case <-ctx.Done():
pprof.StopCPUProfile()
f.Close()
}
}
}
// 生成堆内存报告

import (
"context"
"runtime/pprof"
"log"
) func heapProfile(ctx context.Context) {
f, err := os.Create("heap.prof")
if err != nil {
log.Fatal(err)
}
defer f.Close()
pprof.WriteHeapProfile(f)
go func(){
select{
case <-ctx.Done():
f.Close()
}
}
}
// 生成trace报告
import (
"context"
"runtime/trace"
"log"
)
func traceProfile(ctx context.Context) {
f, err := os.OpenFile("trace.out")
if err != nil {
log.Fatal(err)
}
log.Println("Trace started")
trace.Start(f)
go func(){
select{
case <-ctx.Done():
trace.Stop()
f.Close()
}
}
}
上一篇:【通信】Jave代码中生成url http请求


下一篇:【Azure 云服务】在Cloud Service的代码中如何修改IIS Application Pool的配置呢? 比如IdleTimeout, startMode, Recycling.PeriodicRestart.Time等