memcached提供一系列的指令進行優化的檢視,友善我們調整我們的存儲政策,檢視我們的使用率,記憶體的使用率以及浪費情況。常用的指令有stats、stats settings、stats items、stats slabs
memcached stats指令主要是查詢伺服器的運作狀态和其他内部資料,包含如下這些:
1:pid :伺服器程序ID
2:uptime :伺服器運作時間,機關秒
3:time:伺服器目前的UNIX 時間
4:version :伺服器的版本号
5:libevent:libevent的版本
6:pointer_size :伺服器作業系統位數
7:rusage_user:該程序累計的使用者時間
8:rusage_system:該程序累計的系統時間
9:curr_connections :目前連接配接數
10:total_connections :伺服器啟動後總連接配接數
11:connection_structures :伺服器配置設定的連接配接結構的數量
12:reserved_fds:内部使用的misc fds 數量
13:cmd_get :擷取請求數量
14:get_hits :擷取成功的總次數,命中次數
15:get_misses :擷取失敗的總次數
16:cmd_set :存儲請求數量
17:cmd_flush :flush請求的數量
18:cmd_touch:touch請求的數量
19:delete_misses :删除失敗次數
20:delete_hits :删除命中
21:incr_misses :遞增失敗次數
22:incr_hits :遞增命中次數
23:decr_misses :遞減命中次數
24:decr_hits :遞減失敗次數
25:cas_misses :Cas 原子設定操作失敗次數
26:cas_hits :Cas 命中次數
27:cas_badval :Cas 操作找到key, 但是版本過期,沒有設定成功
28:touch_hits:touch命中次數
29:touch_misses:touch失敗次數
30:auth_cmds :認證次數(包括成功和失敗)
31:auth_errors :認證失敗次數
32:bytes :已用緩存空間
33:bytes_read :總共擷取的資料量
34:bytes_written :總寫入數量數
35:limit_maxbytes :總允許寫入的資料量,和配置設定的記憶體有關
36:accepting_conns:允許的總連接配接數
37:listen_disabled_num :監聽失敗的次數
38:threads:需要的工作線程數
39:hash_bytes:目前使用的Hash table容量大小
40:hash_is_expanding:指定Hash table是否自動增長
41:malloc_fails:malloc記憶體配置設定失敗的次數
42:curr_items :目前緩存item 數量
43:total_items :從服務啟動後,總的存儲緩存item 數量
44:evictions :通過删除item 釋放記憶體的次數
這些資料隐含的幾個基本關系:
rusage_user、rusage_system:這兩個指令可以分析cpu是否過高。
curr_connections 、total_connections :分析連接配接是否過多
cmd_get 、get_hits 、get_misses :命中率
bytes 、bytes_read 、bytes_written :分析位元組數流量
curr_items 、total_items 、evictions :分析對象LRU頻率
1:緩存命中率= get_hits/cmd_get * 100%
2:get_misses的數字加上get_hits應該等于cmd_get
stats sizes指令:輸出所有Item的大小和個數,注意:會鎖定服務,暫停處理請求(建議不要使用)
flush_all指令:使記憶體中所有的item失效。加入參數則表示在N秒後失效。這個操作并不
會真的釋放記憶體空間,而是标志所有的item為失效
version指令:檢視版本
maxbytes:最大位元組數限制,0無限制
maxconns:允許最大連接配接數
tcpport:TCP端口
udpport:UDP端口
verbosity:日志0=none,1=som,2=lots
oldest:最老對象過期時間
evictions:on/off,是否禁用LRU
domain_socket:socket的domain
umask:建立Socket時的umask
growth_factor:增長因子
chunk_size:key+value+flags大小
num_threads:線程數,可以通過-t設定,預設4
stat_key_prefix:stats分隔符
detail_enabled:yes/no,顯示stats細節資訊
reqs_per_event:最大IO吞吐量(每event)
cas_enabled:yes/no,是否啟用CAS,-C禁用
tcp_backlog:TCP監控日志
auth_enabled_sasl:yes/no,是否啟用SASL驗證
stats settings 如下圖所示:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2QvwVe0lmdhJ3ZvwFM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2LcZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39jM4cTMxUDN5ATOwQDM2EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
number:該slab中對象數,不包含過期對象
age:LRU隊列中最老對象的過期時間
evicted:LRU釋放對象數
evicted_nonzero:設定了非0時間的LRU釋放對象數
evicted_time:最後一次LRU秒數,監控頻率
outofmemory:不能存儲對象次數,使用-M會報錯
tailrepairs:修複slabs次數
reclaimed:使用過期對象空間存儲對象次數
stats items如下圖所示:
chunk_size:chunk大小,byte
chunks_per_page:每個page的chunk數量
total_pages:page數量
total_chunks:chunk數量*page數量
get_hits:get命中數
cmd_set:set數
delete_hits:delete命中數
incr_hits:incr命中數
decr_hits:decr命中數
cas_hits:cas命中數
cas_badval:cas資料類型錯誤數
used_chunks:已被配置設定的chunk數
free_chunks: 過期資料空出的chunk裡還沒有被使用的chunk數
free_chunks_end:新配置設定的但是還沒有被使用的chunk數
mem_requested:請求存儲的位元組數
active_slabs:slab數量
total_malloced:總記憶體數量
被浪費記憶體數=((total_chunks或者used_chunks) * chunk_size) - mem_requested,如
果太大,需要調整factor
示範: