如何檢視你的 memcached 的狀態

2021-09-12 23:30:50 字數 3310 閱讀 1604

現在很多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

好了,就醬!

21 4 檢視memcached狀態

主要關注curr items 和 get hits 用get hits 除以 curr items檢視命中率有多高 命中率的目的,是要確認,memcached快取了資料,而且還有請求,如果光快取卻沒有請求,那麼做這個快取也就沒有意義。1.檢視memcached服務狀態 root hao 01 mem...

memcached檢視和清理

1.一種 telnet localhost 200001 登陸 stats 檢視狀態 flush all 清理 quit 退出 2.又學到乙個 echo flush all nc localhost 200001 3.1 資料儲存 假設key為test,value為12345 printf set ...

在 Linux 中檢視你的時區

原創 lctt 譯者 stdioa 2016 11 19 10 00 收藏 1 在這篇短文中,我們將向你簡單介紹幾種 linux 下檢視系統時區的簡單方法。在 linux 機器中,尤其是生產伺服器上的時間管理技能,是在系統管理中乙個極其重要的方面。linux 包含多種可用的時間管理工具,比如date...