生产环境Go程序内存泄露,用pprof如何快速定位

内存泄漏可以在整个系统中以多种形式出现,除了在写代码上的疏忽,忘了关闭该关闭的资源外,更多的时候导致系统发生内存泄露原因可能是设计上决策不对、或者业务逻辑上的疏忽没有考虑到一些边界条件。

比如查数据库时,有个查询条件在一定情况下应用不到,导致程序被迫持有一个超大的结果集,这样持续一段时间,执行相同任务的线程一多,就会造成内存泄露。

Golang 为我们提供了 pprof 工具。掌握之后,可以帮助排查程序的内存泄露问题,当然除了排查内存,它也能排查 CPU 占用过高,线程死锁的这些问题,不过这篇文章我们会聚焦在怎么用 pprof 排查程序的内存泄露问题。

Go 开发的系统中,怎么 添加 pprof 进行采样的步骤,在这里我就不再细说了,因为我之前的文章,对 pprof 的安装和使用做了详细的说明,文章链接我放在这里:

Golang 程序性能分析(一)pprof 和 火焰图分析https://img.ydisp.cn/news/20220628/z2sosprivjb data-id="l20de63f-j1hYhJN8"

THE END
Copyright © 2024 亿华云