新版本穩定了存儲的實現”
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