Apache2上傳大檔案時的記憶體使用情況

Apache2上傳大檔案時的記憶體使用情況

我正在運行 apache2.2.12 和 PHP 5.2.10。 PHP 透過 fcgid 配置為單獨的進程運行。問題是,當使用者上傳檔案時,apache 進程的大小幾乎會增加相同的量。因此,如果有人嘗試上傳 200 MB 的文件,其中一個子進程就會膨脹到目前大小 + 200 MB。如果 2 個使用者同時開始上傳,我的伺服器就會崩潰。

現在虛擬記憶體大小正在增加,但由於我使用的是基於 OpenVZ 的 VPS,所以這才是最重要的。

我的問題是:

  • 這是正常的 Apache 行為還是我可以採取一些措施來解決此問題?
  • 如果沒有,是否有一種更節省記憶體的方法來處理大檔案上傳。依照目前的行為,每個接受上傳的 apache 子進程都需要 1 GB 的可用 RAM。

謝謝!

阿巴亞

-

答案1

有趣的問題,這似乎是 php 的限制。請參閱以下內容:

他們最後似乎都說「使用 java 或 Perl」或其他什麼。也許 stackoverflow 上的某個人已經給了答案。對於如此大的上傳,sftp 可能是更好的解決方案,具體取決於用戶友好程度。

如果你願意使用非php,J上傳看起來是一個不錯的選擇,因為它可以將檔案分成區塊並將每個區塊刷新到磁碟。如果它必須是 php,看起來您可以根據以下內容透過一些套接字程式設計來推出一些自訂內容這個 stackoverflow 帖子

在這種規模下,您可能想要具有恢復和進度功能的東西。

相關內容