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

  

  

时间: 2024-08-24 17:54:12

Memcached学习笔记之四:Memcached统计命令的相关文章

memcached学习笔记2--安装及命令

学习memcached的原理: 用户一 -> 访问浏览器 -> 服务器Apache -> PHP文件(该文件应用了memcached技术) -> [第一次]到数据库DB中查找数据 -> 调用在memcached中 用户二 -> 访问浏览器 -> 服务器Apache -> PHP文件(也是同上面一个文件) -> (如果查询的条件一致)先在mem中找是否存在数据(存在直接调用内存中的数据)  -> (不存在)读取数据库,再将这次结果放入memcach

Linux学习笔记之四————Linux常用命令 ( 待补充)

一.Linux命令--文件.磁盘管理 1.文件管理 <1>查看文件信息:ls ls是英文单词list的简写,其功能为列出目录的内容,是用户最常用的命令之一,它类似于DOS下的dir命令. Linux文件或者目录名称最长可以有265个字符,"."代表当前目录,".."代表上一级目录,以"."开头的文件为隐藏文件,需要用 -a 参数才能显示. ls常用参数: 参数 含义 -a 显示指定目录下所有子目录与文件,包括隐藏文件 -l 以列表方式

memcached学习笔记——存储命令源码分析下篇

上一篇回顾:<memcached学习笔记——存储命令源码分析上篇>通过分析memcached的存储命令源码的过程,了解了memcached如何解析文本命令和mencached的内存管理机制. 本文是延续上一篇,继续分析存储命令的源码.接上一篇内存分配成功后,本文主要讲解:1.memcached存储方式:2.add和set命令的区别. memcached存储方式 哈希表(HashTable) 哈希表在实践中使用的非常广泛,例如编译器通常会维护的一个符号表来保存标记,很多高级语言中也显式的支持哈希

memcached学习笔记——存储命令源码分析上

原创文章,转载请标明,谢谢. 上一篇分析过memcached的连接模型,了解memcached是如何高效处理客户端连接,这一篇分析memcached源码中的process_update_command函数,探究memcached客户端的set命令,解读memcached是如何解析客户端文本命令,剖析memcached的内存管理,LRU算法是如何工作等等. 解析客户端文本命令 客户端向memcached server发出set操作,memcached server读取客户端的命令,客户端的连接状态

memcached学习笔记3--telnet操作memcached

方式: 一.telnet访问memcached缓存系统(主要用于教学,不讨论) telnet 127.0.0.1 11211     => telnet IP地址 端口号 //往Memcached中存放数据 add username 0 60 5       => add:添加命令 username:key的名字(是以key/value存放) 0:标示,一般不用管 60:缓存多长时间,超过时间自动删除,单位(秒) s 5: 表示放入的数据大小 注意:如果一个key已经存在,再要添加数据到这个k

memcached学习笔记6--浅谈memcached的机制 以及 memcached细节讨论

附:请浅谈memcached的机制 答: ①基于C/S架构,协议比较简单 c/s架构,此时memcached为服务器端,我们可以使用如PHP,c++/c等程序连接memcached服务器. memcached的服务器客户端通信并不使用XML等格式,而使用简单的基于文本行的协议,因此通过telnet也能在memcached上保存.读取数据. ②基于libevent事件来处理的 libevent是一套垮平台的事件处理接口的封装,能够处理兼容包括这些操作系统: windows/Linux/BSD/So

memcached学习笔记(一)

预留位置,待整理 memcached学习笔记(一),布布扣,bubuko.com

memcached学习笔记5--socke操作memcached 缓存系统

使用条件:当我们没有权限或者不能使用服务器的时候,我们需要用socket操作memcached memcached-client操作 特点: 无需开启memcache扩展 使用fsocketopen()套接字连接memcached 同样执行CRUD require_once(CLASS_PATH.'memcached-client.php');//CLASS_PATH 是我定义的类文件文件夹路径 $mc = new memcached( array( 'servers' => array( '1

memcached学习笔记4--memcache扩展操作memcached

1. 安装并配置memcache扩展库 找到php.ini文件 添加: extendsion= php_memcache.dll 并把对应的dll文件拷贝到ext目录 2. 使用PHP对Memcahced进行CURD操作(查看手册) 3. 编程测试 用于测试添加和获取 //实例化memcache对象 $m = new Memcache(); //连接到指定的memcached中 ,第一个参数:IP地址, 第二个参数memcached端口号 $m->connect('127.0.0.1', 112