首页 > 代码库 > memcached监控

memcached监控

Memcached性能测试技术标准介绍

 

 

主体监控思路虽大致相同,但细节仍然需要认真把握, 对于团队来讲,则进入到了一个盲区,为了走出来,拨云见日,这几天我们对M emcached 的相关技术进行了补课。

 

先来讲讲大概的结构:

M emcached 默认情况下采用了名为Slab Allocator 的机制分配  将分配的内存分割成各种尺寸的块(chunk),并把尺寸相同的块分成组(class 

技术分享

 

M emcached 会 根据收到的数据的大小 ,选择合适的 class与chunks,并 将数据缓存于其中 。从上图我们可以看到, 由于分配的是特定长度的内存,因此 就存在了 无法有效利用内存 的情况 。例如,将100 字节的数据缓存到128 字节的chunk 中,剩余的28字节就浪费了 

结构大致了解到这里就差不多了,再往下讲起来会比较晦涩。

 

现在来看看 删除机制

主要有两点

(1).     惰性超时机制( Lazy Expiration 

M emcached 不 主动 监视记录是否过期,而是在get 时  查看记录的时间戳,检查记录是否过期。 这样有一个好处 。不会在过期监视上耗费CPU 时间 

(2).     最近最少使用删除 机制  LRU 

M emcached 会优先使用已超时的记录的空间,当 M emcached 的内存空间不足时(无法从class 获取到新的空间时),就从最近未被使用的记录中搜索,并将其空间分配给新的记录。

因为 Lazy Expiration  LRU机制的存在,M emcached 的中的缓存数据并不总是准时删除,存在延迟或提前的可能性,故在测试的过程中不能盲目认定缓存时设定的 expire 时间是完全固定的。

 

再来看看用的最多的stats 命令

如何查看memcache服务器端版本: ./memcached -h
memcache的运行状态可以方便的用 stats 命令显示。
首先用telnet 127.0.0.1 11211这样的命令连接上memcache,然后直接输入stats就可以得到当前memcache的状态。
这些状态的说明如下:

pid memcache服务器的进程ID
uptime 服务器已经运行的秒数
time 服务器当前的unix时间戳
version memcache版本
pointer_size 当前操作系统的指针大小(32位系统一般是32bit)
rusage_user 进程的累计用户时间
rusage_system 进程的累计系统时间
curr_items 服务器当前存储的items数量
total_items 从服务器启动以后存储的items总数量
bytes 当前服务器存储items占用的字节数
curr_connections 当前打开着的连接数
total_connections 从服务器启动以后曾经打开过的连接数
connection_structures 服务器分配的连接构造数
cmd_get get命令(获取)总请求次数
cmd_set set命令(保存)总请求次数
get_hits 总命中次数
get_misses 总未命中次数
evictions 为获取空闲内存而删除的items数(分配给memcache的空间用满后需要删除旧的items来得到空间分配给新的items)
bytes_read 总读取字节数(请求字节数)
bytes_written 总发送字节数(结果字节数)
limit_maxbytes 分配给memcache的内存大小(字节)
threads 当前线程数

Memcached 

version

编号

参数名称 

架构分类

分析价值

获取方式

默认值

单位

含义

1

gethits

命中率

关键

监控获取

 

获取数据成功的次数

2

get_misses

命中率

辅助

监控获取

 

表示获取数据失败的次数

3

cmd_get

命中率

关键

监控获取

 

查询请求总数(gethits+get_misses

4

total_connections

连接数

辅助

启动获取

 

memcached服务启动到当前时间,系统打开过的连接的总数

5

connection_structures

连接数

关键

启动获取

1024

服务器分配时的连接构造数

6

curr_connections

连接数

关键

监控获取

 

当前系统打开的连接数

7

total_malloced

内存占用

关键

监控获取

 

byte

实际已分配的总内存数

8

limit_maxbytes

内存占用

关键

启动获取

67108864

byte

服务缓允许使用的最大字节数

9

curr_items

LRU

关键

监控获取

 

当前缓存中存放的对象的数量,不包括目前已经从缓存中删除的对象

10

total_items

LRU

关键

监控获取

 

从启动到当前时间,系统存储过的所有对象的数量,包括已删除对象

11

evictions

LRU

关键

监控获取

 

LRU空间用满后需要删除旧的items

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

memcached监控