Memcached特点
Memcached是一个开源,分布式,高性能的内存对象缓存系统。
- Memcached是纯内存的对象缓存系统,也就是说它所有数据都以key/value的方式缓存在内存中,性能比较好。当然这是有点也可以说是缺点。因为这种方式就意味着它不能对数据进行持久化。系统重启就会丢失所有数据。
- 协议简单(基于文本行),功能强大。
- 基于libevent的事件处理,无阻塞通信,对内存的读写非常快。
- 基于客户端的分布式,服务端多个Memcached不互相通信。
- Memcached客户端支持任何语言。
Memcached启动
启动Memcached服务端
. /memcached -d -m 10 -u root -l 192. 168. 1. 130 -p 2222 -c 256 -P /tmp/memcached. pi d
- d:作为守护进程来运行
- m:分配给Memcached的内存。这里是10M.
- u: 运行Memcached的用户。
- l:Memcached监听的IP地址。
- p:Memcached监听的端口。
- c: 最大的并发连接数 默认为1024.
- P: 保存进程Id到指定的文件,只有在d使用的时候才有意义。
其它命令参数
- U: 监听UDP端口 0表示不监听(默认为11211)
- s:监听unix套接字路径
- a:UNIX套接字访问掩码,八进制数字(默认0700)
- r:最大核心文件限制。
- M:内存用光时报错(不会删除数据)
- k:锁定所有内存页。 可以锁定内存的上限。
- v:提示信息
- vv:详细信息
- vvv:超级详细信息
- h:打印这个帮助信息并推出
- i:打印Memcached与libevent的许可
- f:增长因子 page里面chunk的增长倍率(默认为:1.25)
- n:chunk的最小空间。(默认为:48. chunk自身数据结构 key flags expiration time占用48个字节,因此一个chunk实际消耗的内存是n+48)
- L: 尝试使用大内存页(如果可用的话)。提高内存页尺寸可以减少”页表缓冲(TLB)”丢失次数,提高运行效率。 为了从操作系统获得大内存页,Memcached会把全部数据项分配到一个大区块。
- t:使用的线程数(默认:4)
- R:每个连接可处理的最大请求数
- C:禁用CAS
- b:后台日志队列的长度(默认:1024)
- B:协议绑定 ascii,binary,auto(默认)
- I:每个数据页尺寸。就是每个slab page的大小。
Memcached关闭
关闭Memcached,先用 ps aux|grep memcached找到进程号,然后kill 掉
stats命令
在Memcached中使用stats命令可以查询服务器的运行状态和其他内部数据。
- pid:服务京城ID
- uptime:服务器运行时间,单位秒
- time:服务器当前的UNIX时间。
- version:服务器的版本号
- libevent:libevent的版本
- pointer_size:服务器操作系统的位数
- rusage_user:该进程累计的用户时间
- rusage_system:该进程累计的系统时间 * 7.8 可以分析CPU占用是否高*
- curr_connection:当前连接数
- total_connections:服务器启动后总连接数 9,10可以分析连接数是否过多
- connection_structures:服务器f
12:reserved_fds:内部使用的miscfds 数量
13:cmd_get :获取请求数量
14:get_hits :获取成功的总次数,命中次数
15:get_misses :获取失败的总次数 13,14,15可以分析命中率
16:cmd_set :存储请求数量
17:cmd_flush :flush请求的数量
18:cmd_touch:touch请求的数量
19:delete_misses :删除失败次数
20:delete_hits :删除命中
21:incr_misses :递增失败次数
22:incr_hits :递增命中次数
23:decr_misses :递减命中次数
24:decr_hits :递减失败次数
25:cas_misses :Cas 原子设置操作失败次数
26:cas_hits :Cas 命中次数
27:cas_badval :Cas 操作找到 key, 但是版本过期,没有设置成功
28:touch_hits:touch命中次数
29:touch_misses:touch失败次数
30:auth_cmds :认证次数(包括成功和失败)
31:auth_errors :认证失败次数
32:bytes :已用缓存空间
33:bytes_read :总共获取的数据量
34:bytes_written :总写入数量数 32,33,34分析字节数流量
35:limit_maxbytes :总允许写入的数据量,和分配的内存有关
36:accepting_conns:允许的总连接数
37:listen_disabled_num:监听失败的次数
38:threads:需要的工作线程数
39:hash_bytes:当前使用的Hash table容量大小
40:hash_is_expanding:指定Hash table是否自动增长
41:malloc_fails:malloc内存分配失败的次数
42:curr_items :当前缓存 item 数量
43:total _items :从服务启动后,总的存储缓存 i tem 数量
44:evictions :通过删除 item 释放内存的次数 42,43,44分析对象LRU频率