最近在项目中出现golang内存溢出的问题,主人刚开始运行时只有10多米,运行几天后,竟然达到10多了个g而且到凌晨流量变少内存也没有明显降低,内存状态呈现一种很不健康的曲线。
像这种情况肯定是golang内存溢出了,为此我持续排查了两天,终于找到问题所在,特此记录下。
<强>准备工作强>
-
<李>一台较好的环境测试机,单台运行无污染。李>
<李>压测工具,无论服务是http还是websocket服务,都必须准备好压测工具模拟最真实的用户场景。李>
<李>将主引入net/http/pprof包,通过http访问获得goroutine,堆信息。李>
//引入pprof 进口_ "net/http/pprof”//在主要中加入 去func () { log.Println (http。ListenAndServe (“localhost: 9999”, nil)) }()
浏览器访问:http://127.0.0.1:9999/调试/pprof/<代码> 代码>