Linux

Memcached 在這種情況下會有所幫助嗎?

  • January 5, 2012

我為一個大型網際網路站點工作,人們可以在該站點上彼此共享大量文本。我們將大部分資訊儲存在 InnoDB 數據庫中,但實際的文本片段儲存在基於文本的文件中的某個位置。這些基於文本的文件在幾 KB 到 10MB 之間變化。這些文件有數百萬個,我們設置了一個良好的文件夾/文件結構,這樣一個文件夾中的文件就不會太多。

儲存這些文件的網路伺服器(數據庫在另一個)是一台功能強大的機器,在 RAID10 中具有 4 個 15k SAS 驅動器,並具有 24GB 記憶體。我們執行 Nginx 作為網路伺服器和 Xcache 來加速 PHP。這一切都很完美,負載通常在 0.7 和 1.5 之間變化。

現在,我只打算使用 Memcached 將“基於文本”的文件儲存在 ram 中。因此,不必每次有人請求必須載入這些“基於文本”文件之一的頁面時都從磁碟讀取它們。在 PHP 中我使用 file_get_contents(); 將“基於文本”的文件載入到變數中,然後將其顯示在頁面上的某個位置。

我的問題是,它實際上會降低您認為為這個特定功能實現 Memcached 的負載,還是 Linux 本身已經有某種內部文件記憶體,當我經常通過 file_get_contents 請求某個文件時使用它?

顯而易見的答案是您必須在特定場景中自己測試各種選項。

也就是說,Linux 使用所有可用的 RAM 作為磁碟記憶體,但前提是它不用於其他更重要的目的。

我猜想從磁碟讀取一個小文本文件(或者,對於流行的文件,從記憶體的 RAM 讀取)會比與 memcached 進行對話更快。

您必須對此進行測試,但請記住,Linux 非常積極地記憶體文件和目錄結構,因此您很可能已經從 RAM 中提供了大部分內容。

您是否在 Web 伺服器上觀察到沉重、緩慢的磁碟 I/O?

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