天天看點

Memcached全面解析及使用zabbix監控

Memcached是什麼? 

Memcached的特征 

a.協定簡單,Memcached使用簡單的文本行協定 

b.基于libevent的事件處理 

c.内置記憶體存儲方式 

d.每個Memcached伺服器之間互不通信 

e.Memcached使用key-value的方式進行儲存

Libevent 已經被廣泛的應用,作為底層的網絡庫;比如 memcached、 Vomit、 Nylon、 Netchat等等。 

Memcached的記憶體存儲 

由于傳統的記憶體配置設定使用malloc函數和free函數進行記憶體配置設定,導緻記憶體産生的大量的記憶體碎片,無法被利用。 

Memcached采用Slab Allocator實作記憶體的配置設定。 

Slab Allocator的原理:按照預先規定将記憶體配置設定成大小特定且不等的記憶體快(chunk),并把大小相等的記憶體快組織成組(slab class)。 

Memcached如何通過Slab Allocator實作資料的緩存? 

當一個資料到達Memcached時,Memcached根據資料的大小去選擇大小适宜的slab,在通過chunk的空閑清單,選中出chunk将資料緩存上去。 

Memcached在配置設定記憶體過程中怎麼實作不等長的記憶體劃分呢? 

Memcached在啟動時會指定growth factor因子,來控制每個slab之間的差異,并不是随意進行劃分的。如:growth factor因子為2,前一個slab class中的每個chunk的大小為2,則下一個slab class中的每一個chunk的大小為4,就這樣一次類推。預設Memcahed設定中growth factor的值為1.25

Memcached的逾時原理 

Memcached怎麼去監控自己在記憶體中緩存的資源是否過期,其采用Lazy Expiration,Memcached不會自動的去監控并檢測緩存在記憶體中的内容是否過期,當一個請求到來時,Memcached才會去檢查請求資源的記錄時間戳,檢查記錄是否過期,如沒有過期再進行傳回。 

Memcached的删除的原理 

Memcached的分布式排程 

Memcached全面解析及使用zabbix監控

假如web伺服器要緩存一個資料庫到Memcached伺服器,那麼要緩存在那個上呢? 

其實Memcached API提供了幾個排程算法 

a.餘數計算: 

把将要緩存在Memcached上的記錄的key值進行C32計算,再将計算結果與node數+1進行取餘,得到的結果就是此資料要緩存的Memcached伺服器。 

缺點: 

當進行增加或者移除節點時,緩存資料進行重組,無法擷取與儲存時相同的伺服器,進而影響緩存的命中率。 

b.Consistent hash: 

将node節點的主機名進行HASH計算,并配置在0~2^23的圓上,再将資源的key值進行HASH計算,并映射在圓上,從映射位置順時針查找,找到的第一個伺服器就将資料儲存在此伺服器上。 

Memcached全面解析及使用zabbix監控

Memcached的安裝方式

Memcached的啟動

Memcached狀态查詢

使用zabbix監聽memcached 

監聽資料:命中多少,總過多少資源,多少次擷取,多少次進行添加,讀取位元組書,寫入位元組數 

1.在Memached的主機上安裝zabbix

2.在另一台主機上安裝zabbix-server并啟動在web頁面進行配置 

configure->host->item(memcached host) 

定義item: 

Memcached全面解析及使用zabbix監控
Memcached全面解析及使用zabbix監控
Memcached全面解析及使用zabbix監控

定義Graphs 

Memcached全面解析及使用zabbix監控
Memcached全面解析及使用zabbix監控

本文轉自lnsaneLlinux部落格51CTO部落格,原文連結http://blog.51cto.com/lnsane784/1928524如需轉載請自行聯系原作者

Insane_linux