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

  现在很多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

  好了,就酱!

  

如何查看你的 memcached 的状态的更多相关文章

  1. 查看、分析memcached使用状态

    访问量上升,数据库压力大,怎么办?好办法是在中间挡一层缓存!这个缓存要求高效,不能比数据库慢,否则服务质量受影响:如果能把数据用hash打散存储到硬盘,也是可以的,不过在内存越来越便宜的今天,还是使用 ...

  2. 查看mysql主从配置的状态及修正 slave不启动问题

    1.查看master的状态 mysql> show master status;  //Position不应该为0 mysql> show processlist;  //state状态应 ...

  3. linux查看CPU性能及工作状态的指令

    http://www.aikaiyuan.com/9347.html http://blog.csdn.net/jk110333/article/details/8683478 http://www. ...

  4. (转)linux查看CPU性能及工作状态的指令mpstat,vmstat,iostat,sar,top

    衡量CPU性能的指标: 1,用户使用CPU的情况:CPU运行常规用户进程CPU运行niced processCPU运行实时进程 2,系统使用CPU情况:用于I/O管理:中断和驱动用于内存管理:页面交换 ...

  5. 通过查看mysql 配置参数、状态来优化你的mysql

    mysql的监控方法大致分为两类: 1.连接到mysql数据库内部,使用show status,show variables,flush status 来查看mysql的各种性能指标. 2. 直接使用 ...

  6. 安装zookeeper时候,可以查看进程启动,但是状态显示报错:Error contacting service. It is probably not running

    安装zookeeper-3.3.2的时候,启动正常没报错,但zkServer.sh status查看状态的时候却出现错误,如下: JMX enabled by defaultUsing config: ...

  7. mysql 通过查看mysql 配置参数、状态来优化你的mysql

    我把MYISAM改成了INNODB,数据库对CPU方面的占用变小很多' mysql的监控方法大致分为两类: 1.连接到mysql数据库内部,使用show status,show variables,f ...

  8. 查看进程中的socket状态和数量

    程序运行时查看,结果是这样子的 C:\Users\Administrator>netstat -ano|findstr TCP TIME_WAIT TCP TIME_WAIT TCP TIME_ ...

  9. Kafka查看topic、consumer group状态命令

    最近工作中遇到需要使用kafka的场景,测试消费程序启动后,要莫名的过几十秒乃至几分钟才能成功获取到到topic的partition和offset,而后开始消费数据,于是学习了一下查看kafka br ...

随机推荐

  1. MAC机中安装RUBY环境

    在安装CocoaPods之前要先配置好RUBY环境,本文就怎么安装RUBY的环境进行一总结.安装Ruby环境首先需要安装Xcode然后需要安装Homebrew,接下来需要安装RVM最后安装Ruby环境 ...

  2. asp.net webform javascript postback JSON

    在弹出界面点击按钮触发后台的postback而不是刷新界面(保留已存在的搜索条件) function filterData() { var data = { col: $('#filterPopup' ...

  3. jQuery 图片轮播的代码分离

    以前遇到过jQuery实现列表自动滚动,这次的图片轮播在原理上与之相同,只有一些细微的差别,就是需要在图片的右下角显示当前图片的序号. html代码,以及对应的css代码: <div id=&q ...

  4. NULL, NUL, EOF, '\0',0区别

    NULL: 定义为0或0L或(void *)0,用于指示一个指针值是空,即什么都不指:'\0': 用且只用字符串结束符;NUL : 0x00,0值字符,可以用于结束ASCII字符串,和'\0'类似,但 ...

  5. NodeJS包管理工具——npm入门

    如今每个语言体系中都有一个包管理工具,PHP的Composer,Ruby的gem,Python的pip,Java的Maven……当然还有Node.js的npm.有的人会奇怪为何要引入又一个新东西来让我 ...

  6. 【NHibernate】配置- sql打印

    <property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property> <pr ...

  7. 深度:ARC会导致的内存泄露

    iOS提供了ARC功能,很大程度上简化了内存管理的代码. 但使用ARC并不代表了不会发生内存泄露,使用不当照样会发生内存泄露. 下面列举两种内存泄露的情况. 1,循环参照 A有个属性参照B,B有个属性 ...

  8. 【ASP.NET】TreeView控件学习

    相关链接 : http://www.cnblogs.com/yc-755909659/p/3596039.html

  9. 【BZOJ 1022】 [SHOI2008]小约翰的游戏John

    Description 小约翰经常和他的哥哥玩一个非常有趣的游戏:桌子上有n堆石子,小约翰和他的哥哥轮流取石子,每个人取的时候,可以随意选择一堆石子,在这堆石子中取走任意多的石子,但不能一粒石子也不取 ...

  10. 南京邮电大学CTF隐写术部分Writeup

    女神 听说这是女神的私房照,里面藏着flag哦 http://115.28.150.176/misc1.jpg 这个链接居然打不开,摔!万念俱灰!主办方可否给力点! P.S.为了方便日后学习,暂时列下 ...