Memcached 1.6.0 發布,啟用外部儲存支持

發生 顯著釋放記憶體資料快取系統 記憶體快取 1.6.0,它對鍵/值格式的資料進行操作,並且易於使用。 Memcached 通常用作輕量級解決方案,透過快取對 DBMS 和中間資料的存取來加速高負載網站的工作。 程式碼 提供 在 BSD 許可證下。

新版本穩定了存儲的實現”外部存儲”,現在預設建置(要停用它,配置腳本提供“--disable-extstore”選項),但需要在啟動時明確啟動(舊安裝將在更新後繼續工作,無需更改)。雖然 extstore 通常被認為是穩定的,但建議在非常大的系統上實現它時要小心。

Extstore 允許您使用 SSD/快閃磁碟機來擴展快取大小。與 RAM 一樣,快閃記憶體儲存不是永久性的,並且會在重新啟動時重置。新模式的範圍是確保大數據的高效快取。當使用「extstore」時,金鑰和元資料像以前一樣僅儲存在RAM中,但與金鑰相關的大數據(其大小超過設定閾值)將儲存在外部儲存中,並且只有指標保留在RAM中。

如果金鑰與小資料關聯,則 Memcached 會照常運作,將資料保留在記憶體中並且不存取外部儲存。如果有大量空閒內存,那麼最需要的資料還可以完全位於RAM中的快取中(例如,您可以指定僅將大於1024位元組且3600秒未存取的物件重置到Flash) )。

此實作經過最佳化,可確保最高效能和最低 CPU 負載,但會犧牲儲存效率(高水準碎片)。為了延長快閃磁碟機的使用壽命,資料會依序緩衝並刷新到儲存空間。若要在重新啟動之間儲存快取狀態,您可以使用版本 1.5.18 中出現的功能將快取轉儲轉儲到檔案。下次啟動時,您可以從此檔案恢復緩存,以消除由於快取為空而導致內容處理器上的負載峰值(快取立即變「熱」)。

Memcached 1.6 的第二個重要變更是對網路通訊程式碼的重新設計,該程式碼適用於在單一系統呼叫中自動處理批次請求。先前,當在單一 TCP 封包中傳送多個 GET 命令時,memcached 會透過單獨的系統呼叫傳送結果。在 Memcached 1.6 中,透過發送單一系統呼叫來聚合和回傳回應。因此,現在每個系統呼叫平均有 1.5 個按鍵,測試顯示 CPU 負載減少了高達 25%,延遲也減少了幾個百分點。

網路子系統的重新設計也使得可以根據需要動態分配緩衝區,而不​​是靜態分配緩衝區。這種優化將透過客戶端建立的連接等待新命令時的記憶體消耗從4.5 KB 減少到400-500 字節,並且還可以消除對malloc、realloc 和free 的多次調用,這些調用會導致不必要的記憶體碎片。具有大量連接的系統。現在,每個工作執行緒都為活動用戶端連線處理自​​己的讀寫緩衝區池。調整這些緩衝區的大小
提供了選項“-o resp_obj_mem_limit=N”和“-o read_buf_mem_limt=N”。

Branch 1.6 也宣布棄用 二進制協議 與伺服器的交互。二進位協定維護和錯誤修復將繼續,但新功能和現有功能的更新將不會移植。 文字協議 將繼續發展,不做任何改變。二進位協定已被新協定取代 (具有緊湊元命令的協議的文本版本),展示了性能和可靠性的最佳組合。新協議涵蓋了先前透過文字和二進位協議實現的所有操作。

來源: opennet.ru

添加評論