文件上传功能,在内部OA平台、工单系统、还是企业web产品展示网,都是一个非常常见的一个功能。
业务测试,在测试文件上传上限这条case时: 使用了单个大文件,多个小文件测试文件的上传限制和解析性能。意外发现了,出现OOM问题,这显然是一个后端问题。
- 问题定位。查找相关日志和业务监控。发现某个时间点开始,内存出现明显飙升,显然是触发了某种业务逻辑导致的。然后查看前后5秒的业务日志,定位到了excel文件导入功能。流程如下,用户上传excel文件,上传到服务器中存储,mq生产者发送消息,消息保存到mq服务器。mq消费者消息(执行动作,从文件服务器读取excel,业务处理,写入新excel,上传文件到服务器。)发送websocket消息给用户。用户下载excel文件。
- 问题大概率出现在导入excel之后。研究代码之后发现,将文件读入内存那段代码有问题,如果文件过大,可能会导致内存不够用。
- 修改代码,换另一个函数并且将一次性读取的行数限制在100行。最后,将打开的文件正常关闭,不然也有可能出现OOM问题!
后面再增加点如何查看dump文件,面试时又可以吹了!