added memory profiling flag for dumping heap periodically

This commit is contained in:
Philipp Mieden 2019-05-21 12:11:16 +02:00
parent 295cdf66fc
commit 55fd63b82d

View File

@ -35,7 +35,10 @@ var (
flagWebserverAddress = flag.String("webserver-address", "", "address to bind web server host:port, when empty no webserver will be spawned")
flagWebserverPath = flag.String("webserver-path", "/contentserver", "path to export the webserver on - useful when behind a proxy")
flagVarDir = flag.String("var-dir", "/var/lib/contentserver", "where to put my data")
flagFreeOSMem = flag.Int("free-os-mem", 0, "free OS mem every X minutes")
// debugging / profiling
flagFreeOSMem = flag.Int("free-os-mem", 0, "free OS mem every X minutes")
flagHeapDump = flag.Int("heap-dump", 0, "dump heap every X minutes")
logLevelOptions = []string{
logLevelError,
@ -78,6 +81,24 @@ func main() {
}()
}
if *flagHeapDump > 0 {
log.Notice("[INFO] dumping heap every ", *flagHeapDump, " minutes!")
go func() {
for _ = range time.After(time.Duration(*flagFreeOSMem) * time.Minute) {
log.Notice("HeapDump")
f, err := os.Create("heapdump")
if err != nil {
panic("failed to create heap dump file")
}
debug.WriteHeapDump(f.Fd())
err = f.Close()
if err != nil {
panic("failed to create heap dump file")
}
}
}()
}
if len(flag.Args()) == 1 {
fmt.Println(*flagAddress, flag.Arg(0))