imposm3/stats/memprof.go

33 lines
471 B
Go

package stats
import (
"fmt"
"log"
"os"
"path"
"runtime/pprof"
"time"
)
func MemProfiler(dir string, interval time.Duration) {
if err := os.MkdirAll(dir, 0750); err != nil {
panic(err)
}
ticker := time.NewTicker(interval)
i := 0
for _ = range ticker.C {
filename := path.Join(
dir,
fmt.Sprintf("memprof-%03d.pprof", i),
)
f, err := os.Create(filename)
if err != nil {
log.Fatal(err)
}
pprof.WriteHeapProfile(f)
f.Close()
i++
}
}