2011-08-20 43 views
0

我想知道我可以對我的服務器進行哪些優化,以更好地處理文件上傳/下載的性能。爲HTTP文件共享優化我的Apache2/PHP5/MySQL服務器的最佳方式是什麼?

目前我在想Apache2可能不是最好的HTTP服務器嗎?

我可以在我的服務器上做出任何建議或優化?

我目前的設置是一個Apache2 HTTP服務器,PHP處理文件上傳,目前存儲在Web根目錄下的一個文件夾中,隨機分配一個存儲在MySQL數據庫中的名稱(以及更多的文件/用戶信息)。

當用戶想要下載文件時,我使用header()函數強制下載和readfile()輸出文件內容。

回答

1

你是對的,這是低效的,但這不是Apache的錯。用PHP提供文件將成爲你的瓶頸。您應該查看X-Sendfile,它允許您告訴Apache(通過PHP插入的頭文件)要發送的文件(即使它不在DocRoot中)。

隨着更大的文件和更重的負載,速度的增加將更加明顯。當然,提高速度的更好方法是使用CDN,但這對我們大多數人來說都是過度的。

Using X-Sendfile with Apache/PHP

http://www.jasny.net/articles/how-i-php-x-sendfile/

至於與上傳提高性能,我沒有特別的知識。但是,總的來說,我相信每個文件上傳都會「阻塞」你的Apache工作人員很長一段時間,這意味着Apache必須爲其他請求產生更多的工作進程。隨着足夠的工人產生,服務器可以顯着減緩。你可以看看Nginx,它是基於事件的,而不是基於進程的服務器。這可能會增加您的吞吐量,但我承認我從來沒有在Nginx下嘗試過上傳。

注意:Nginx使用X-Accel-Redirect而不是X-Sendfile。

http://wiki.nginx.org/XSendfile

+0

感謝您的幫助信息。 – Muggles

相關問題