官方的protocol.txt可以在memcached原作者的git上找到:https://github.com/memcached/memcached/blob/master/doc/protocol.txt
stats系列命令因为返回的字段、数值比较多,比较复杂,而且都有他们自己的意思,所以特地抽出来。
1. stats
在stats命令返回的数据里,“32u”类型表示一个32位长的无符号整型,“64u”类型表示一个64位长的无符号整型。“32u.32u”类型表示两个由冒号分隔的32位无符号整型(看做是浮点数)。
|-----------------------+---------+-------------------------------------------
| Name | Type | Meaning
|-----------------------+---------+-------------------------------------------
| pid | 32u | memcached服务器的进程id号
| uptime | 32u | memcached自启动至今的时长(按秒计算)
| time | 32u | 服务器当前的UNIX时间戳
| version | string | memcached的版本号字符串
| pointer_size | 32 | 默认的服务器操作系统指针尺寸(一般为32或64)
| rusage_user | 32u.32u | memcached进程用户态的累计时长(秒:毫秒)
| rusage_system | 32u.32u | memcached进程内核态的累计时长(秒:毫秒)
| curr_items | 32u | memcached当前存储的对象数量
| total_items | 32u | memcached自启动至今存储过的对象数量
| bytes | 64u | memcached当前用来存储数据所消耗的内存量(字节)
| curr_connections | 32u | memcached当前打开的连接
| total_connections | 32u | memcached自启动至今打开过的连接数
| connection_structures | 32u | memcached分配的连接结构的数量
| cmd_get | 64u | get命令的总次数
| cmd_set | 64u | set命令的总次数
| get_hits | 64u | get命令命中的总次数
| get_misses | 64u | get命令未命中的总次数
| delete_misses | 64u | delete命令未命中的总次数
| delete_hits | 64u | delete命令命中的总次数
| incr_misses | 64u | incr命令未命中的总次数
| incr_hits | 64u | incr命令命中的总次数
| decr_misses | 64u | decr命令未命中的总次数
| decr_hits | 64u | decr命令命中的总次数
| cas_misses | 64u | cas命令未命中的总次数
| cas_hits | 64u | cas命令命中的总次数
| cas_badval | 64u | cas命令命中却更新失败的总次数
| auth_cmds | 64u | memcached接受到所有的授权命令,无论成功失败
| auth_errors | 64u | memcached接受到的所有失败的授权命令
| evictions | 64u | 因LRU机制而被主动覆盖(删除)的对象数目
| reclaimed | 64u | memcached启动至今有多少次在存储数据的时候使用了过期数据的空间
| bytes_read | 64u | memcached从网络中读取的总数据字节数
| bytes_written | 64u | memcached向网络中写入的总数据字节数
| limit_maxbytes | 32u | memcached所有可以用来存储的内存的字节数(启动时候定义好的)
| threads | 32u | worker线程数量(具体请查看doc/threads.txt)
| conn_yields | 64u | memcached启动至今有多少次打开的连接因为内部请求数达到-R参数指定的限值,
| | | 一个连接的操作主动放弃让给另一个连接(不是很明白什么意思,具体可以参考-R参数的含义)
|-----------------------+---------+-------------------------------------------
2. stats settings
附带上“settings”参数的“stats”命令将会返回运行中的memcached的具体的settings信息。
注意这里不保证统计项的次序,列表也不一定是详尽的。除此之外,它的返回结果与其它的stats命令是一样的。
Source code
|-------------------+----------+----------------------------------------------
| Name | Type | Meaning
|-------------------+----------+----------------------------------------------
| maxbytes | size_t | memcached可分配的最大缓存内存字节数
| maxconns | 32 | memcached允许的连接数最大数值
| tcpport | 32 | TCP监听端口
| udpport | 32 | UDP监听端口
| inter | string | 监听的host地址
| verbosity | 32 | memcached运行信息输出级别:0 = none, 1 = some, 2 = lots
| oldest | 32u | memcached当前存储的对象中最长的存活时长
| evictions | on/off | 当设成off的时候,LRU机制将不会启用
| domain_socket | string | Unix socket的文件路径(如果存在的话)
| umask | 32 (oct) | 创建Unix socket的umask
| growth_factor | float | Chunk尺寸增长因子数值
| chunk_size | 32 | 最小的chunk尺寸(key+value+flags)
| num_threads | 32 | 线程数量(包括dispatch的)
| stat_key_prefix | char | Stats命令分隔符
| detail_enabled | bool | 如果yes的话,stats的详细信息将被开启
| reqs_per_event | 32 | 一个事件(event)中允许的最大IO操作数
| cas_enabled | bool | 如果no的话,CAS不会被启用
| tcp_backlog | 32 | TCP监听队列(backlog)等待长度的最大值
| auth_enabled_sasl | yes/no | 是否启用SASL授权请求
|-------------------+----------+----------------------------------------------
3. stats items
这个命令返回的数据都是以slab为单位显示的:
|------------------------+---------------------------------------
| Name | Meaning
|------------------------+---------------------------------------
| number | 当前slab中存储的对象数量,过期的对象不会主动被排除出去
| age | LRU中存活时间最长的对象的存活时长
| evicted | 根据LRU原则不得不在过期之前就被删除的对象的个数
| evicted_nonzero | 根据LRU原则不得不在过期之间就被删除,且有被设过过期时间的对象个数
| evicted_time | 在该slab中,最近一次对象因为LRU机制而被删除的时间点到现在的秒数,
| | 用这个来做LRU的频率监控
| outofmemory | 该slab无法为新对象分配内存空间的次数,出现这个数值意味着
| | memcached在运行的时候带上了-M参数或者存在LRU删除失败
| tailrepairs | 这个数值表示了我们自己解决的slab引用泄露的次数,
| | 如果这个数值增长很多,请联系开发人员
| reclaimed | memcached使用一个过期数据的空间来存储数据的次数
|------------------------+---------------------------------------
这个命令将只会显示存在数据的slab的信息,所以一个空的缓存将会返回空集。
4. stats sizes
这个stats命令将会返回存储在缓存内所有对象的尺寸和个数信息。
警告:这个命令将会锁死你的缓存!它会遍历缓存内存储的每个对象,并获取他们的尺寸。虽然这个命令速度很快,但是如果你的缓存里存储了很多对象的话,这个命令还是有可能会使你的缓存在几秒钟内无法进行任何缓存服务。
命令返回的格式为:
STAT <size> <count>\r\n
这个命令会显示出,对于所有存储在你缓存中的对象,是否每32个字节就存在一个slab。你可以通过这个命令来查看,是否调整slab增长因子会节约你的内存开销。
举例来说:如果你大部分的存储对象的尺寸是小于200字节的话,创建更多小尺寸的slab会使得存储对象找到更适合它们尺寸的slab。
5. stats slabs
引用
|-----------------+----------------------------------------------------------
| Name | Meaning
|-----------------+----------------------------------------------------------
| chunk_size | 每个chunk占用的内存空间,一个存储对象将会寻找适合它尺寸的chunk来存储
| chunks_per_page | 当前数字说明了每个page可以划分成多少个chunk,一个page默认大小小于等于1M,
| | Slabs申请的内存是按page分配的,接着按大小划分为chunk
| total_pages | 当前slab所分配到的page总数
| total_chunks | 当前slab所分配到的chunk总数
| get_hits | 当前slab中命中的get请求数
| cmd_set | 当前slab接受的所有set命令请求数
| delete_hits | 当前slab中命中的delete请求数
| incr_hits | 当前slab中命中的incr请求数
| decr_hits | 当前slab中命中的decr请求数
| cas_hits | 当前slab中命中的cas请求数
| cas_badval | 当前slab中命中但是更新失败的cas请求数
| used_chunks | 已经被分配给存储对象的chunk数
| free_chunks | 还未被分配给存储对象,或通过delete操作释放出来的chunk(注1)
| free_chunks_end | 最近分配的Page尾部空闲chunk数
| mem_requested | 当前slab中被请求用来存储数据的内存空间字节总数(注2)
| active_slabs | memcached分配的slab的总数
| total_malloced | memcached分配给所有slab的pages的内存总量
|-----------------+----------------------------------------------------------
注1:个人觉得这里的原文是有问题的。原文是:“Chunks not yet allocated to items, or freed via delete.”,而我在实际使用中的感觉是这个free_chunks是指存储对象因为过期或者因为被delete掉而导致的chunk闲置(可再利用)。简单来说,这个字段的意思就是已经被分配过,但是目前可以再次被利用(过期、删除)的chunk的数量有多少。所以数据对象在被存储的时候是优先被分配到free_chunks里的,而不是优先分配到free_chunks_end里的。
注2:存储对象是被存储在尺寸等于或者大于对象尺寸的slab里的。mem_requested显示了当前slab里所有存储对象总占用的内存空间。
(total_chunks * chunk_size) – mem_requested 的结果显示了有多少内存在这个slab里是被闲置的。如果你看到闲置的内存量很大, 考虑使用slab增长因子来调节slab大小。
原文这里是total_chunks,个人觉得有点不对,应该是used_chunks + free_chunks。(used_chunks + free_chunks) * chunk_size就是用掉的chunks被分配到的内存空间,mem_requested是实际被占用掉的内存空间,两者的差值就是没有用掉的(闲置的)内存。
分享到:
相关推荐
memcached的基本命令,windows下面绑定服务,默认设置在window下面不会生效,用sc命令可以让设置生效.
memcached-win64安装包 内含详细安装命令说明文件:说明.txt windows上保证安装成功。
计算机后端-PHP视频教程. Memcached04 memcached基本命令.wmv
在终端(也即cmd命令界面)下输入 ‘c:\memcached\memcached.exe -d install’ 安装 3. 再输入: ‘c:\memcached\memcached.exe -d start’ 启动。NOTE: 以后memcached将作为windows的一个服务每次开机时自动启动...
Memcached get 命令 Memcached get 命令获取存储在 key(键) 中的 value(数据值) ,如果 key 不存在,则返回空。 语法: get 命令的基本语法格式如下: get key 多个 key 使用空格隔开,如下: get key1 key2 key3...
memcached, libevent, MemCachedClient
它使用一个名为transport-memcached的插件提供Memcached命令映射到REST接口的功能,使得Memcached命令可以被同样的REST层处理。 Memcached支持的命令包括get、set、delete和quit等。其中,get命令用于获取存储在...
memcached 64位 window memcached 64位 window memcached 64位 window
Memcached delete 命令 Memcached delete 命令用于删除已存在的 key(键)。 语法: delete 命令的基本语法格式如下: delete key [noreply] 参数说明如下: key:键值 key-value 结构中的 key,用于查找缓存值。 no...
主要介绍了PHP 扩展Memcached命令用法,结合实例形式总结分析了PHP 扩展Memcached命令基本使用方法与相关操作注意事项,需要的朋友可以参考下
memcached几个常见的命令,比较有用。大型网站设计都需要这个技术,希望PHP程序员好好看看这个文档。
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。... 运行命令: memcached.exe -vv
安装Memcached及Memcached配置
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。... 运行命令: memcached.exe -vv
python-memcached python-memcached
memcached的基本命令,很不错哦。
在终端(也即cmd命令界面)下输入 ‘c:\memcached\memcached.exe -d install’ 安装 3. 再输入: ‘c:\memcached\memcached.exe -d start’ 启动。NOTE: 以后memcached将作为windows的一个服务每次开机时自动启动。...
memcached安装软件 libevent-2.0.21-stable.tar.gz magent.tar.gz memcached-1.4.15.tar.gz