go在处理批量下载时候出现fatal error: runtime: out of memory

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