昨天早晨发现了内存占用超过70%的报警信息,通过grafana大盘看,内存的确出现了泄漏问题,从内存、goroutine两项都有递增的现象。
果断找了台idc机器,通过go pprof进行分析,
./go tool pprof -inuse_space http://ip:port/debug/pprof/heap 使用tree 和 top 分析内存占用情况。
发现是etcd在初始化过程出现了内存泄漏问题,怀疑routine泄漏也源自此处。 分析代码
发现在client.New 生成的实例,最终,是没有被close的