• 如何查看你的 memcached 的状态


      最近略忙,好久没有更新博客了,已长草,今天来除下草,好了,不废话了,开始!

      现在很多web服务都会用到  memcached ,如何知道你的 memcached 是否正常工作,命中率如何呢,本文简单介绍一下:

      首先你需要知道  memcached 服务所在的ip 和端口号,这个一般会写在web服务的环境变量里面,当然也可以写在代码里面,不过这样更容易曝光,让memcached 服务受到攻击。

      1、telnet   ip   端口号  连上MC

      

      2、输入 stats    查看MC状态

      

      OK, 你就拿到了目前MC的状态,那么各个变量是什么意思呢?我们应该重点关注哪些量呢?

      3、各个变量的含义:

      STAT pid 22362 //memcache服务器的进程ID
      STAT uptime 1469315 //服务器已经运行的秒数
      STAT time 1339671194 //服务器当前的unix时间戳
      STAT version 1.4.9 //memcache版本
      STAT libevent 1.4.9-stable //libevent版本
      STAT pointer_size 64 //当前操作系统的指针大小(32位系统一般是32bit,64就是64位操作系统)
      STAT rusage_user 3695.485200 //进程的累计用户时间
      STAT rusage_system 14751.273465 //进程的累计系统时间
      STAT
    curr_connections 69 //服务器当前存储的items数量
      STAT total_connections 855430 //从服务器启动以后存储的items总数量
      STAT connection_structures 74 //服务器分配的连接构造数
      STAT reserved_fds 20 //
      STAT cmd_get 328806688 //get命令(获取)总请求次数
      STAT cmd_set 75441133 //set命令(保存)总请求次数
      STAT cmd_flush 34 //flush命令请求次数
      STAT cmd_touch 0 //touch命令请求次数
      STAT get_hits 253547177 //总命中次数
      STAT get_misses 75259511 //总未命中次数
      STAT delete_misses 4 //delete命令未命中次数
      STAT delete_hits 565730 //delete命令命中次数
      STAT incr_misses 0 //incr命令未命中次数
      STAT incr_hits 0 //incr命令命中次数
      STAT decr_misses 0 //decr命令未命中次数
      STAT decr_hits 0 //decr命令命中次数
      STAT cas_misses 0 //cas命令未命中次数
      STAT cas_hits 0 //cas命令命中次数
      STAT cas_badval 0 //使用擦拭次数
      STAT touch_hits 0 //touch命令未命中次数
      STAT touch_misses 0 //touch命令命中次数
      STAT auth_cmds 0 //认证命令处理的次数
       STAT auth_errors 0 //认证失败数目
      STAT bytes_read 545701515844 //总读取字节数(请求字节数)
      STAT bytes_written 1649639749866 //总发送字节数(结果字节数)
      STAT limit_maxbytes 2147483648 //分配给memcache的内存大小(字节)
      STAT accepting_conns 1 //服务器是否达到过最大连接(0/1)
      STAT listen_disabled_num 0 //失效的监听数
      STAT threads 4 //当前线程数
      STAT conn_yields 14 //连接操作主动放弃数目
      STAT hash_power_level 16 //
      STAT hash_bytes 524288
      STAT hash_is_expanding 0
      STAT expired_unfetched 30705763
      STAT evicted_unfetched 0
      STAT bytes 61380700 //当前存储占用的字节数
      STAT curr_items 28786 //当前存储的数据总数
      STAT total_items 75441133 //启动以来存储的数据总数
      STAT evictions 0 //为获取空闲内存而删除的items数(分配给memcache的空间用满后需要删除旧的items来得到空间分配给新的items)
      STAT reclaimed 39957976 //已过期的数据条目来存储新数据的数目

      4、应该重点关注的变量:

      笔者认为,使用memcache应该主要关注如下变量(已经在上面标红)

      cmd_get  get请求总次数

      get_hits   get请求命中总次数

      get_misses get请求失败总次数

      这三个量可以算出MC的命中率get_hits / cmd_get  或者 get_hits / (get_hits+get_misses) ,这个是使用MC服务最重要的一个量,命中率越高越好。

      另外,需要关注:

      limit_maxbytes  为MC分配的内存大小

      curr_items   当前存储的条目数量

      bytes 当前服务使用的MC内存

      显然,这两个量标识了,你当前还有多少内存空间富余,也非常重要,当这两个量接近时,可以及时给MC扩容,根据笔者的经验,MC分配的空间不是全部能用的,实际能用的大约是分配空间的 90% 左右,为什么?笔者没有看过memcache的源码,猜测是因为 memcached 本身的key  value的索引也是需要耗费一定的内存的,等读了源码再来跟新。

      好了,并没有读源码,不过看了几篇关于memcached的介绍,回头重新写一篇博文吧。。。这里简单说下,简单可以理解为MC的存储分配是按照分片来划分的,而每片按照一定的比例增长,如果一片存储区域不能存下当前的value,那么需要换一片更大的存储空间,就会产生一定的存储资源浪费。

      evictions 为获取空闲内存而删除的items数

      这个量显然也灰常重要,能看出来有多少items因为空间不足被挤出了MC

      好了,就酱!

      

  • 相关阅读:
    mysql GRANT ALL PRIVILEGES 限制某个或所有客户端都可以连接至mysql
    MySql开启远程用户登录GRANTALLPRIVILEGESON*.*TO'root'@'%'I MySql开启远程用户登录GRANTALLPRIVILEGESON*.*TO'root'@'%'I
    php中 -> 和 => 和 :: 的用法 以及 self 和 $this 的用法
    mysql case when then else end 的用法
    C/C++ 程序的build过程
    Git 笔记
    English Snippets
    Ubuntu 使用笔记
    在CentOS上安装Sublime Text
    hihoCoder #1379 Emulator
  • 原文地址:https://www.cnblogs.com/smallrookie/p/5776565.html
Copyright © 2020-2023  润新知