Memcached 状态详解

2021-10-19 11:43:32 浏览数 (1)

前言

memcached 是一个免费开源的,高性能分布式内存对象缓存系统

memcached 运维管理过程中,会需要了解缓存系统当前的状态,这里分享一下 memcached 状态的详细解释

Tip: memcached 相关基础,可以参考之前的一篇博客 memcached基础

详细可以参考 memcached 源码

Tip: 目前最新版本为 Memcached v1.4.26 ,实验中使用 v1.4.25


概要


连接实例

由于 memcached 的协议非常简单,可以使用 telnet 直接连接

代码语言:javascript复制
[mtest@meminst ~]$ telnet localhost 11212
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
version
VERSION 1.4.25

Tip: 使用 telnet 作客户端,是在直接使用 tcp 建立连接和传送数据,所以并没有其它客户端那么友好的提示信息或界面,这个得忍


stats

要获取内部统计数据可以通过 stats 命令,最主要的状态信息也都在里面

代码语言:javascript复制
[mtest@meminst ~]$ telnet localhost 11212
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
stats 
STAT pid 92579
STAT uptime 15483344
STAT time 1466503609
STAT version 1.4.25
STAT libevent 1.4.13-stable
STAT pointer_size 64
STAT rusage_user 30237.694171
STAT rusage_system 48141.977307
STAT curr_connections 74
STAT total_connections 11487
STAT connection_structures 99
STAT reserved_fds 50
STAT cmd_get 2179473016
STAT cmd_set 1780727826
STAT cmd_flush 0
STAT cmd_touch 0
STAT get_hits 2151718170
STAT get_misses 27754846
STAT delete_misses 523904
STAT delete_hits 609080
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 234944598773
STAT bytes_written 1788730431727
STAT limit_maxbytes 4294967296
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT time_in_listen_disabled_us 0
STAT threads 10
STAT conn_yields 330
STAT hash_power_level 23
STAT hash_bytes 67108864
STAT hash_is_expanding 0
STAT malloc_fails 0
STAT bytes 3841174015
STAT curr_items 7995364
STAT total_items 1780727826
STAT expired_unfetched 210230
STAT evicted_unfetched 9554685
STAT evictions 17096414
STAT reclaimed 281812
STAT crawler_reclaimed 0
STAT crawler_items_checked 0
STAT lrutail_reflocked 0
END

状态详解

Verb

Comment

pid

此服务进程号

uptime

此服务的连续运行时间,单位是秒

time

服务器所在主机当前系统的时间,单位是秒

version

服务软件版本

libevent

libevent 版本

pointer_size

所在主机操作系统的指针位数,32或64

rusage_user

进程的累计用户时间

rusage_system

进程的累计系统时间

curr_connections

当前系统打开的连接数

total_connections

从启动到现在,系统打开过的连接总数

connection_structures

实例分配的连接构造(结构体)数

reserved_fds

内部使用(保留)的FD数

cmd_get

get 命令执行的累计次数 (cmd_get = get_hits get_misses)

cmd_set

set 命令执行的累计次数

cmd_flush

flush 命令执行的累计次数

cmd_touch

touch 命令执行的累计次数

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

cas 命令检查值不等(错误的 CAS id)而更新失败的累计次数

touch_hits

touch 命令成功返回的累计次数

touch_misses

touch 命令失败返回的累计次数

auth_cmds

认证命令执行累计次数

auth_errors

认证命令执行失败累计次数

bytes_read

实例从网络读取的总字节数

bytes_written

实例发送到网络的总字节数

limit_maxbytes

缓存允许使用的最大字节数,等于我们启动服务时设置的大小

accepting_conns

布尔值,实例是否接受连接(1为接受,0为不接受)

listen_disabled_num

统计当前服务器连接数曾经达到最大连接的次数,这个次数应该为0或者接近于0,如果这个数字不断增长, 就要小心我们的服务了

time_in_listen_disabled_us

实例由于到达最大连接数,而拒绝连接(处于监听状态但不接受新连接)的累计时间,单位为ms

threads

可以被请求的工作线程的总数量

conn_yields

Number of times any connection yielded to another due to hitting the -R limit

hash_power_level

当前的哈希表翻倍的级别(Current size multiplier for hash table)

hash_bytes

当前哈希表的大小,单位字节

hash_is_expanding

布尔值1或0,表明哈希表是否增涨到过新的量级

malloc_fails

内存分配失败的次数

bytes

当前存储总字节数

curr_items

实例当前存储的items数量

total_items

从服务器启动以后存储过的items总数量

expired_unfetched

已过期但未获取的对象数目

evicted_unfetched

已驱逐但未获取的对象数目

evictions

为获取空闲内存(LRU)而删除的items数,分配给memcache的空间用满后需要删除旧的items来得到空间分配给新的items

reclaimed

因为条目过期而执行的回收次数

crawler_reclaimed

被 LRU 爬虫释放的累计对象数

crawler_items_checked

被 LRU 检查过的对象总数

lrutail_reflocked

Times LRU tail was found with active ref .Items can be evicted to avoid OOM errors

详细可以参考 memcached 源码

这些值的组合结果可以获取常见的可用性标准,如:

命中率 = get_hits / cmd_get * 100%

其它的指标以此类推

有空可以据此写一个 memcached 的状态性能指标展示工具


命令汇总

  • telnet localhost 11212

原文地址

0 人点赞