Memcached是什么?
Memcached是一個分布式內存緩存服務器,用于緩存數據庫查詢結果,減少數據庫的訪問次數,提高動態web頁面的速度及擴展性。
Memcached的特征
a.協議簡單,Memcached使用簡單的文本行協議
b.基于libevent的事件處理
c.內置內存存儲方式
d.每個Memcached服務器之間互不通信
e.Memcached使用key-value的方式進行儲存
Libevent: Libevent 是一個用C語言編寫的、輕量級的開源高性能事件通知庫,主要有以下幾個亮點:事件驅動( event-driven),高性能;輕量級,專注于網絡,不如 ACE 那么臃腫龐大;源代碼相當精煉、易讀;跨平臺,支持 Windows、 Linux、 *BSD 和 Mac Os;支持多種 I/O 多路復用技術, epoll、 poll、 dev/poll、 select 和 kqueue 等;支持 I/O,定時器和信號等事件;注冊事件優先級。
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會使用LRU(最近最少未被使用算法)來將資源空間分配給新的記錄。
Memcached的分布式調度
假如web服務器要緩存一個數據庫到Memcached服務器,那么要緩存在那個上呢?
其實Memcached API提供了幾個調度算法
a.余數計算:
把將要緩存在Memcached上的記錄的key值進行C32計算,再將計算結果與node數+1進行取余,得到的結果就是此數據要緩存的Memcached服務器。
缺點:
當進行增加或者移除節點時,緩存數據進行重組,無法獲取與保存時相同的服務器,從而影響緩存的命中率。
b.Consistent hash:
將node節點的主機名進行HASH計算,并配置在0~2^23的圓上,再將資源的key值進行HASH計算,并映射在圓上,從映射位置順時針查找,找到的第一個服務器就將數據保存在此服務器上。
Memcached的安裝方式
Memcached的啟動
[root@COS_Clone1 ~]#memcached -p 20001 -m 64m -d11Memcached狀態查詢
[root@COS_Clone1 bin]# memcached-tool 127.0.0.1:11211 stats#127.0.0.1:11211 Field Value accepting_conns 1 auth_cmds 0 auth_errors 0 bytes 0 bytes_read 7 讀了多少字節 bytes_written 0 寫了多少字節 cas_badval 0 cas_hits 0 cas_misses 0 cmd_flush 0 cmd_get 0 進行了多少次獲取 cmd_set 0 進行多少次插入 conn_yields 0 connection_structures 11 curr_connections 10 curr_items 0 decr_hits 0 decr_misses 0 delete_hits 0 delete_misses 0 evictions 0 get_hits 0 命中多少次 get_misses 0 incr_hits 0 incr_misses 0 limit_maxbytes 67108864 listen_disabled_num 0 pid 4465 pointer_size 64 rusage_system 0.035994 rusage_user 0.000999 threads 4 time 1495460002 total_connections 11 total_items 0 內存中多少條記錄 uptime 35 version 1.4.41234567891011121314151617181920212223242526272829303132333435363738394012345678910111213141516171819202122232425262728293031323334353637383940使用zabbix監聽memcached
監聽數據:命中多少,總過多少資源,多少次獲取,多少次進行添加,讀取字節書,寫入字節數
1.在Memached的主機上安裝zabbix
2.在另一臺主機上安裝zabbix-server并啟動在web頁面進行配置
configure->host->item(memcached host)
定義item:
定義Graphs
測試結果
另外有需要云服務器可以了解下創新互聯cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
本文名稱:Memcached全面解析及使用zabbix監控-創新互聯
瀏覽路徑:http://m.newbst.com/article6/dcgiig.html
成都網站建設公司_創新互聯,為您提供虛擬主機、移動網站建設、建站公司、外貿建站、商城網站、企業網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯