生产环境下载功能OOM问题复盘
起因
某天生产环境,突然接到运维的告警通知,发现后端服务的某个pod内存不足,一看日志OOM栈内存溢出了
问题
经业务核实,发现我们组实习生写的批量下载附件功能,接口返回慢并超时后报504错误码,导致了我们k8s部署的服务pod内存飙升
,2GB内存不够用,并触发pod不断的重启,影响业务功能。
原因
后端的下载附件接口,后端除了接口bug外,还疏忽测试了,一旦附件多了,生产环境有些大于20M的大附件,会导致大量的文件流IO,并且该接口返回慢,前端没加防抖,当重复点击附件下载时,就会导致OOM溢出
解决方案
1.下载附件这种文件流IO且高耗时功能,前端同学必须加防抖防重机制,防止重复多次点击。
2.业务上限制批量下载的个数或时间,限制文件大小,避免大量文件流IO