一次线上报表导出的功能异常无法使用,看监控日志,服务器内存有段时间占用高
除内存异常,其他组件都没发现问题,怀疑OOM导致服务挂了,查询服务运行时间,发现确实是重启了.
1 | # 查看程序pid |
go pprof 分析内存占用
分析异常api的功能主要是excel的读写(用的excelize这个库),便用prof测试下内存占用,这里在测试用例读取一个几万行的excel文件(.xlsx),使用go的工具pprof记录内存占用
从.xlsx文件与.csv文件读取对比看,excelize与xlsx读取xlsx文件,比使用encoding/csv包读取csv文件更占内存,相差在2至3倍,前者平均需要4,5GB内存,后者仅占1.7GB左右.
综上,没有特殊需求,简单的表格文件保存可以优先选择csv
文件大小
以下测试使用同样内容的文件,8w行,csv:30.1MB,xlsx:18.7MB