如何查看你的 memcached 的狀態


  最近略忙,好久沒有更新博客了,已長草,今天來除下草,好了,不廢話了,開始!

  現在很多web服務都會用到  memcached ,如何知道你的 memcached 是否正常工作,命中率如何呢,本文簡單介紹一下:

  首先你需要知道  memcached 服務所在的ip 和端口號,這個一般會寫在web服務的環境變量里面,當然也可以寫在代碼里面,不過這樣更容易曝光,讓memcached 服務受到攻擊。

  1、telnet   ip   端口號  連上MC

  

 

  2、輸入 stats    查看MC狀態

  

  OK, 你就拿到了目前MC的狀態,那么各個變量是什么意思呢?我們應該重點關注哪些量呢?

 

  3、各個變量的含義:

  STAT pid 22362 //memcache服務器的進程ID
  STAT uptime 1469315 //服務器已經運行的秒數
  STAT time 1339671194 //服務器當前的unix時間戳
  STAT version 1.4.9 //memcache版本
  STAT libevent 1.4.9-stable //libevent版本
  STAT pointer_size 64 //當前操作系統的指針大小(32位系統一般是32bit,64就是64位操作系統)
  STAT rusage_user 3695.485200 //進程的累計用戶時間
  STAT rusage_system 14751.273465 //進程的累計系統時間
  STAT
curr_connections 69 //服務器當前存儲的items數量
  STAT total_connections 855430 //從服務器啟動以后存儲的items總數量
  STAT connection_structures 74 //服務器分配的連接構造數
  STAT reserved_fds 20 //
  STAT cmd_get 328806688 //get命令(獲取)總請求次數
  STAT cmd_set 75441133 //set命令(保存)總請求次數
  STAT cmd_flush 34 //flush命令請求次數
  STAT cmd_touch 0 //touch命令請求次數
  STAT get_hits 253547177 //總命中次數
  STAT get_misses 75259511 //總未命中次數
  STAT delete_misses 4 //delete命令未命中次數
  STAT delete_hits 565730 //delete命令命中次數
  STAT incr_misses 0 //incr命令未命中次數
  STAT incr_hits 0 //incr命令命中次數
  STAT decr_misses 0 //decr命令未命中次數
  STAT decr_hits 0 //decr命令命中次數
  STAT cas_misses 0 //cas命令未命中次數
  STAT cas_hits 0 //cas命令命中次數
  STAT cas_badval 0 //使用擦拭次數
  STAT touch_hits 0 //touch命令未命中次數
  STAT touch_misses 0 //touch命令命中次數
  STAT auth_cmds 0 //認證命令處理的次數
   STAT auth_errors 0 //認證失敗數目
  STAT bytes_read 545701515844 //總讀取字節數(請求字節數)
  STAT bytes_written 1649639749866 //總發送字節數(結果字節數)
  STAT limit_maxbytes 2147483648 //分配給memcache的內存大小(字節)
  STAT accepting_conns 1 //服務器是否達到過最大連接(0/1)
  STAT listen_disabled_num 0 //失效的監聽數
  STAT threads 4 //當前線程數
  STAT conn_yields 14 //連接操作主動放棄數目
  STAT hash_power_level 16 //
  STAT hash_bytes 524288
  STAT hash_is_expanding 0
  STAT expired_unfetched 30705763
  STAT evicted_unfetched 0
  STAT bytes 61380700 //當前存儲占用的字節數
  STAT curr_items 28786 //當前存儲的數據總數
  STAT total_items 75441133 //啟動以來存儲的數據總數
  STAT evictions 0 //為獲取空閑內存而刪除的items數(分配給memcache的空間用滿后需要刪除舊的items來得到空間分配給新的items)
  STAT reclaimed 39957976 //已過期的數據條目來存儲新數據的數目

 

  4、應該重點關注的變量:

  筆者認為,使用memcache應該主要關注如下變量(已經在上面標紅)

  cmd_get  get請求總次數

  get_hits   get請求命中總次數

  get_misses get請求失敗總次數

  這三個量可以算出MC的命中率get_hits / cmd_get  或者 get_hits / (get_hits+get_misses) ,這個是使用MC服務最重要的一個量,命中率越高越好。

  另外,需要關注:

  limit_maxbytes  為MC分配的內存大小

  curr_items   當前存儲的條目數量

  bytes 當前服務使用的MC內存

  顯然,這兩個量標識了,你當前還有多少內存空間富余,也非常重要,當這兩個量接近時,可以及時給MC擴容,根據筆者的經驗,MC分配的空間不是全部能用的,實際能用的大約是分配空間的 90% 左右,為什么?筆者沒有看過memcache的源碼,猜測是因為 memcached 本身的key  value的索引也是需要耗費一定的內存的,等讀了源碼再來跟新。

  好了,並沒有讀源碼,不過看了幾篇關於memcached的介紹,回頭重新寫一篇博文吧。。。這里簡單說下,簡單可以理解為MC的存儲分配是按照分片來划分的,而每片按照一定的比例增長,如果一片存儲區域不能存下當前的value,那么需要換一片更大的存儲空間,就會產生一定的存儲資源浪費。

  evictions 為獲取空閑內存而刪除的items數

  這個量顯然也灰常重要,能看出來有多少items因為空間不足被擠出了MC

  好了,就醬!

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM