如何查看你的 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
好了,就酱!
如何查看你的 memcached 的状态的更多相关文章
- 查看、分析memcached使用状态
访问量上升,数据库压力大,怎么办?好办法是在中间挡一层缓存!这个缓存要求高效,不能比数据库慢,否则服务质量受影响:如果能把数据用hash打散存储到硬盘,也是可以的,不过在内存越来越便宜的今天,还是使用 ...
- 查看mysql主从配置的状态及修正 slave不启动问题
1.查看master的状态 mysql> show master status; //Position不应该为0 mysql> show processlist; //state状态应 ...
- linux查看CPU性能及工作状态的指令
http://www.aikaiyuan.com/9347.html http://blog.csdn.net/jk110333/article/details/8683478 http://www. ...
- (转)linux查看CPU性能及工作状态的指令mpstat,vmstat,iostat,sar,top
衡量CPU性能的指标: 1,用户使用CPU的情况:CPU运行常规用户进程CPU运行niced processCPU运行实时进程 2,系统使用CPU情况:用于I/O管理:中断和驱动用于内存管理:页面交换 ...
- 通过查看mysql 配置参数、状态来优化你的mysql
mysql的监控方法大致分为两类: 1.连接到mysql数据库内部,使用show status,show variables,flush status 来查看mysql的各种性能指标. 2. 直接使用 ...
- 安装zookeeper时候,可以查看进程启动,但是状态显示报错:Error contacting service. It is probably not running
安装zookeeper-3.3.2的时候,启动正常没报错,但zkServer.sh status查看状态的时候却出现错误,如下: JMX enabled by defaultUsing config: ...
- mysql 通过查看mysql 配置参数、状态来优化你的mysql
我把MYISAM改成了INNODB,数据库对CPU方面的占用变小很多' mysql的监控方法大致分为两类: 1.连接到mysql数据库内部,使用show status,show variables,f ...
- 查看进程中的socket状态和数量
程序运行时查看,结果是这样子的 C:\Users\Administrator>netstat -ano|findstr TCP TIME_WAIT TCP TIME_WAIT TCP TIME_ ...
- Kafka查看topic、consumer group状态命令
最近工作中遇到需要使用kafka的场景,测试消费程序启动后,要莫名的过几十秒乃至几分钟才能成功获取到到topic的partition和offset,而后开始消费数据,于是学习了一下查看kafka br ...
随机推荐
- undefined local variable or method ‘xxx’ for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0xbc88d6c>错误解决方案
官方文档如下: https://github.com/rspec/rspec-rails/blob/master/Capybara.md Capybara 2.0 To use Capybara 2. ...
- linux 学习笔记3
①find -name *.txt //查看当前目录所有文件 .txt 结尾文件 ②whereis *.txt //查看.txt结尾文件 但不显示 .txt 打包:tar -cf a.tar ...
- 解决java.io.IOException: Cannot run program "cygpath": CreateProcess error=2, 系统找不到指定的文件 的错误
一.外部环境: 系统环境:Windows 8 磁盘分区:只有C盘 开发环境:IntelliJ IDEA Community Edition 2016.1.3(64) 执行代码:rdd.saveAsTe ...
- C#快速学习笔记(译)续一
6.虚拟和非虚拟函数 下面是一个非虚拟函数 using System; namespace Test2 { class Plane { public double TopSpeed() {return ...
- 【WPF】Application应用程序启动
wpf应用程序在启动的时候会自动创建Main函数并调用Application实例的run(),从而启动Application进程.Main函数在一个App.g.cs文件中,App.g.cs文件的位置在 ...
- c#中sqlhelper类的编写(一)
在.net平台的项目开发中,凡是用到数据库交互的,都有必要了解SqlHelper类的原理. 步骤一: 我就拿WPF项目开发作为例子.首先要新建一个App.config(应用程序配置文件).注意,在VS ...
- MySQL存储引擎 InnoDB/ MyISAM/ MERGE/ BDB 的区别
MyISAM:默认的MySQL插件式存储引擎,它是在Web.数据仓储和其他应用环境下最常使用的存储引擎之一.注意,通过更改 STORAGE_ENGINE 配置变量,能够方便地更改MySQL服务器的默认 ...
- PHP - PDO 之 mysql 参数绑定
<?php /* pdo 学习 */ $dsn = 'mysql:host=localhost;dbname=cswl';//构建连接dsn $db = new pdo($dsn,'root', ...
- Ubuntu 设置root用户登录
由于 Ubuntu 是基于 Debian 的 linux 操作系统,在默认的情况下,是没有超级用户(superuser, root)的,但有些系统操作必须有超级用户的权限才能进行,如手动释放内存等. ...
- TCP/IP长连接和短连接
http://www.cnblogs.com/bigwalnut/articles/2129070.html TCP/IP通信程序设计的丰富多样性 刚接触TCP/IP通信设计的人根据范例可以很快编出一 ...