我打算構建大文件服務器,並且需要堆棧溢出社區對文件系統選擇(linux)的建議。在適度寫入下使用nginx服務1GB文件的最佳文件系統,讀取性能明智?
文件服務器將服務1-2GB大小的靜態文件的Nginx通過(主要是每個請求不同)下,在恆定中等寫入磁盤(RAID5 SATA/7200磁盤大規模)。寫入讀取比率約爲1:5-10,每寫入1個字節每秒,讀取5-10個。 對我來說最重要的是讀取性能,我可以忍受較慢的寫入。
什麼Linux文件系統將是這個任務的最佳解決方案?爲什麼:)謝謝!
我打算構建大文件服務器,並且需要堆棧溢出社區對文件系統選擇(linux)的建議。在適度寫入下使用nginx服務1GB文件的最佳文件系統,讀取性能明智?
文件服務器將服務1-2GB大小的靜態文件的Nginx通過(主要是每個請求不同)下,在恆定中等寫入磁盤(RAID5 SATA/7200磁盤大規模)。寫入讀取比率約爲1:5-10,每寫入1個字節每秒,讀取5-10個。 對我來說最重要的是讀取性能,我可以忍受較慢的寫入。
什麼Linux文件系統將是這個任務的最佳解決方案?爲什麼:)謝謝!
非常大的文件往往不是非常依賴於您所使用的文件系統,現代文件系統(即不胖!)做存儲的大型連續塊分配它們,從而減少尋道延遲的一個很好的工作。如果你傾向於看到它們之間的差異在於小文件性能,在空間不足情況下的分裂阻力,併發性等等。存儲大文件是一個相對容易的問題,我懷疑你會看到可衡量的差異。
但一如既往:如果你真的關心,基準。關於文件系統性能沒有簡單的答案。
爲用戶提供服務重內容最好的結果,有調別的東西。請通過下面Nginx core developer's comment看一看:
切斷的sendfile,它可以在linux下 此類工作負載不好,由於沒有能力控制預讀(從 磁盤讀取,因此塊)。
sendfile off;
使用大輸出緩衝器
output_buffers 1 512K
嘗試使用AIO,以確保更好的磁盤併發(下 Linux的,它需要的directio以及注),即是這樣的
aio on; directio 512;
其他建議:
檢查文件系統交換,不使用
文件系統 - EXT4,XFS。很好地啓用data_writeback和noatime安裝選項
我實現了每「真實」磁盤(主軸)「隨機讀取」性能80MB/s。 這是我的發現。
因此,首先決定你需要多少流量向下推至用戶,有多少存儲你每臺服務器需要。
由於您已經有RAID5設置,您可以跳過下面給出的磁盤設置建議。
讓我們舉一個帶有3 * 2TB磁盤的專用1Gbps帶寬服務器的例子。 保留專用於OS和tmp的第一張磁盤。對於其他2個磁盤,你可以創建一個軟件RAID(對我來說,它比板載硬件RAID更好)。否則,你需要在獨立的磁盤上平分你的文件。想法是保持兩個磁盤共享讀/寫負載平等。軟件raid-0是最好的選擇。
的Nginx的conf 有兩種方法來實現使用nginx的性能高的水平。
使用上的directio
AIO;
directio 512; output_buffers 1 8m;
「這個選項需要你有大量內存」 需要大約12-16GB的ram。
用戶級的IO
output_buffers 1個2M;
「請確保您已設置預讀以4-6MB軟件RAID安裝」 blockdev看看-setra 4096的/ dev/md0的(或獨立磁盤安裝)
此設置將優化使用系統文件緩存,並需要更少的內存。 需要8GB左右的內存。
共同注:
您可能還想使用帶寬限制來啓用可用帶寬上的100個連接。每個下載連接將使用4MB的活動RAM。
limit_rate_after 2m;
limit_rate 100k;
兩個上述溶液將縮放3磁盤服務器上容易到1 k +同時發生的用戶。 假設您有1Gbps的帶寬,並且每個連接都以1Mb/ps的速度進行節流 需要額外的設置來優化磁盤寫入而不會影響讀取量。
使所有上傳到mount os/tmpuploads上的主os磁盤。這將確保沒有間歇性干擾,而重讀正在進行。然後使用「dd」命令將文件從/ tmpuploads移至withlag = direct。像
dd if=/tmpuploads/<myfile> of=/raidmount/uploads/<myfile> oflag=direct bs=8196k
所以沒有真正:(你有沒有試過刪除上ext2-3大文件VS XFS VS JFS?還有,看看內核源代碼就已經透露給你,不同的FS司機花不同時間的臨界部分,他們往往在高IO壓力下表現出不同的表現。 –
刪除大文件不是用例。如果你有號碼,給他們看。我支持我寫的內容。 –
數字? 「有謊言,該死的謊言,然後基準」我還沒有看到沒有任何營銷目標的基準。我在談論我的經驗和公開的Linux內核源碼。然而,「我懷疑你會看到可衡量的差異」這一點是荒謬的。 –