Memory

從自託管網站下載大文件

  • July 14, 2021

抱歉,如果問題很簡單,我是 Web 開發和自託管伺服器的新手。

我們有一個自託管網站,它應該有一個按鈕來下載一個大的 zip 文件(1 GB)。為此,我們在index.html文件中有一個簡單的解決方案:

<form action="path/to/file.zip" style="display: inline;">
   <button type="submit" class="btn btn-light">DOWNLOAD</button>
</form>

這通常工作得很好。問題是,每當多個訪問者嘗試同時下載文件時,伺服器就會耗盡記憶體並且網站崩潰。這是因為每次有人點擊下載按鈕時,文件似乎在整個下載過程中載入到 RAM 中。當多個訪問者點擊“下載”按鈕時,文件會多次載入到 RAM 中。作為附加資訊,該網站是用 python+Flask 建構的,伺服器有 12 GB 的 RAM。

我在這個答案(如何阻止 Apache 使我的整個伺服器崩潰?)中看到了這一點,他們建議“為長時間執行的程序減輕 Apache 的負載”,但我不確定如何實現這一點。您可以建議解決此問題的任何解決方案嗎?

非常感謝您提前。

非常感謝您的回饋,能夠圍繞正確的問題提出問題並找到答案對我很有幫助。

事實證明,我們的 nginx 伺服器只是將請求從公共地址轉發到我們伺服器中的本地地址;該應用程序實際上使用了 Tornado 網路伺服器。所以解決的辦法就是直接用nginx來服務靜態文件,非靜態部分只轉發到tornado伺服器。這解決了記憶體問題。

再次感謝您的幫助和忍受我的初學者問題:)

引用自:https://serverfault.com/questions/1068906