Memcached学习笔记之四:Memcached统计命令
Memcached提供一系列的命令进行优化的查看,方便我们调整我们的存储策略,查看我们的使用率,内存的使用率以及浪费情况。
常用的命令有 stats、stats settings、stats items、stats slabs 等。
1. stats 命令 服务器信息统计
用于返回服务器的统计信息,比如 pid(进程号)、连接数等,具体如下:
- pid: memcache服务器进程ID
- uptime:服务器已运行秒数
- time:服务器当前Unix时间戳
- version:memcache版本
- pointer_size:操作系统指针大小
- rusage_user:进程累计用户时间
- rusage_system:进程累计系统时间
- curr_connections:当前连接数量
- total_connections:Memcached运行以来连接总数
- connection_structures:Memcached分配的连接结构数量
- cmd_get:get命令请求次数
- cmd_set:set命令请求次数
- cmd_flush:flush命令请求次数
- get_hits:get命令命中次数
- get_misses:get命令未命中次数
- delete_misses:delete命令未命中次数
- delete_hits:delete命令命中次数
- incr_misses:incr命令未命中次数
- incr_hits:incr命令命中次数
- decr_misses:decr命令未命中次数
- decr_hits:decr命令命中次数
- cas_misses:cas命令未命中次数
- cas_hits:cas命令命中次数
- cas_badval:使用擦拭次数
- auth_cmds:认证命令处理的次数
- auth_errors:认证失败数目
- bytes_read:读取总字节数
- bytes_written:发送总字节数
- limit_maxbytes:分配的内存总大小(字节)
- accepting_conns:服务器是否达到过最大连接(0/1)
- listen_disabled_num:失效的监听数
- threads:当前线程数
- conn_yields:连接操作主动放弃数目
- bytes:当前存储占用的字节数
- curr_items:当前存储的数据总数
- total_items:启动以来存储的数据总数
- evictions:LRU释放的对象数目
- reclaimed:已过期的数据条目来存储新数据的数目
这些数据隐含的几个基本关系:
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的大小和个数,该信息返回两列,第一列是 item 的大小,第二列是 item 的个数。注意:会锁定服务,暂停处理请求(建议不要使用)
flush_all命令: flush_all [time] [noreply] 清理缓存的键值对,使内存中所有的item失效。
加入参数 time 表示在 time 秒后失效。这个操作并不会真的释放内存空间,而是标识所有的item为失效。
version命令:查看版本。
2. stats settings 命令 设置信息统计
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验证
3. stats items 命令 数据项统计
用于显示各个 slab 中 item 的数目和存储时长(最后一次访问距离现在的秒数),具体如下:
number:该slab中对象数,不包含过期对象
age:LRU队列中最老对象的过期时间
evicted:LRU释放对象数
evicted_nonzero:设置了非0时间的LRU释放对象数
evicted_time:最后一次LRU秒数,监控频率
outofmemory:不能存储对象次数,使用-M会报错
tailrepairs:修复slabs次数
reclaimed:使用过期对象空间存储对象次数
4. stats slabs 区块信息统计
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