- 状况,测试环境8g内存程序运行之后还剩1g多空闲内存测试环境下载二十集MP4文件就会抛出oom 同时检测不到任何panic 貌似是被liunx 直接给干掉了
- 本地环境16g内存同样的请求能够正常请求并且返回 。 postman 也因为运行内存不够而闪退 。 使用powershell 执行请求能正常返回二进制乱码内容
- 分析。测试环境内存资源紧张,在使用并发二十MP4文件下载的时候首先都是将这些资源加载到内存中最终打包成zip文件,所以导致内存疯涨,系统运行内存不够(大约到93%左右)go服务直接崩溃。
- 解决方案,使用分批下载。比如5 10 集为一批。拆分成多个请求来下载。每次执行请求完成之后内存得到释放。最终能维持一个平衡不会猛涨
- 所以所有的编写代码都需要考虑到极值问题。并给出解决方案。