go在處理批量下載時候出現fatal error: runtime: out of memory

  • 狀況,測試環境8g內存程序運行之後還剩1g多空閒內存測試環境下載二十集MP4文件就會拋出oom  同時檢測不到任何panic 貌似是被liunx 直接給幹掉了
  • 本地環境16g內存同樣的請求能夠正常請求並且返回 。 postman 也因爲運行內存不夠而閃退 。 使用powershell 執行請求能正常返回二進制亂碼內容
  • 分析。測試環境內存資源緊張,在使用併發二十MP4文件下載的時候首先都是將這些資源加載到內存中最終打包成zip文件,所以導致內存瘋漲,系統運行內存不夠(大約到93%左右)go服務直接崩潰。
  • 解決方案,使用分批下載。比如5 10 集爲一批。拆分成多個請求來下載。每次執行請求完成之後內存得到釋放。最終能維持一個平衡不會猛漲
  • 所以所有的編寫代碼都需要考慮到極值問題。並給出解決方案。
    發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章