memcached塊限制

Memcached chunk limit

來源: link 標籤:membership 更新時間:

  問題

為什麼 memcached 中有硬編碼的塊限制(壓縮後為.5 meg)?有沒有人重新編譯它們?我知道我不應該傳送大塊像這樣,但這些額外的重塊不時發生在我身上並造成嚴重破壞.

  最佳答案

this question in official FAQ

我可能在memcached中遇到什麼限制? (Wayback Machine)

引用:

您可能會看到 memcache 的簡單限制是關鍵, 專案大小限制.鍵限制為250個字元.儲存資料 不能超過1兆位元組,因為這是最大的典型 頁:1

FAQ現在已經修訂,現在有兩個單獨的問題涉及:

什麼是maxium鍵長度? (250位元組)

金鑰的最大大大小是 250 個字元。 減去使用客戶機“字首”或類似的功能,因為 字首被貼在原始金鑰的前面。 一般來說更好,因為它們儲存記憶體並使用較少的頻寬。

為什麼專案限制為1兆位元組大小?

這是一個很受歡迎的問題!

簡短答案:因為記憶體分配器的演算法是如何工作的。

long – Long answer:memcached的記憶體存儲存引擎(將是 javascript – pluggable /調整後的未來...),使用板法進行記憶體處理 管理。記憶體被分解成不同大小的板塊, 從最小數字開始,由階乘提升到 最大值。

假設最小值是400位元組,最大值是1 Megabyte,而階乘是1.20:

板1 - 400位元組板2 - 480位元組板3 - 576位元組等。

板塊越大,板塊和板塊之間的差距越大 所以最大值越大 記憶體存儲存是. memcached還必須預先分配一些記憶體 所以設定一個更小的階乘 最大值需要更多的開銷。

還有其他原因你不想這樣做... 談論一個網頁,你試圖儲存/載入值 那麼大,你可能做錯了什麼。 需要大量的時間來載入和解壓資料結構 進入記憶體,你的網站很可能表現不好。

如果你真的想要儲存大於1MB的物品,你可以 ruby-on-rails – 使用編輯的slabs.c:POWER_BLOCK值重新編譯memcached,或使用 低效的malloc / free 後端.其他建議包括 資料庫、模板等。

  相同標籤的其他問題

membership