influxdb/pkg/pprofutil/pprofutil.go

37 lines
533 B
Go

package pprofutil
import (
"os"
"runtime/pprof"
)
type Profile struct {
*pprof.Profile
Path string
Debug int
}
func NewProfile(name, path string, debug int) *Profile {
p := &Profile{Profile: pprof.NewProfile(name), Path: path, Debug: debug}
return p
}
func (p *Profile) Stop() {
f, err := os.Create(p.Path)
if err != nil {
panic(err)
}
defer f.Close()
if err := p.WriteTo(f, p.Debug); err != nil {
panic(err)
}
if err := f.Close(); err != nil {
panic(err)
}
println("pprof profile written:", p.Path)
}