最近排查一个因文件(微信安装包130M+)上传导致内存飙升,被杀死进程的问题,因为这个动作是在大文件上传的时候触发的,而且必现,所以当时第一反应是因文件流忘记关闭导致内存泄露等问题引起,于是把文件上传功能开头到位排查了一遍,没有发现异常,并且导致进程被杀死只发生在测试环境,本地和开发均正常,本地16G内存,开发8G内存,测试2G。
使用pprof排查内存分配使用情况:
go tool pprof -alloc_space http://localhost:9003/debug/pprof/heap?seconds=20
可以看到函数分配和占用内存最多的函数是LogMiddleware,
使用list查看函数内部具体分配情况:
(pprof) list LogMiddleware
Total: 2GB
ROUTINE ======================== epshealth-airobot-common/biz/middleware.LogMiddleware in D:\WorkSpace\epshealth-airobot-common\b