Memcache是高性能,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。
libevent是一套跨平台的事件处理接口的封装,能够兼容包括这些操作系统:Windows/Linux/BSD/Solaris 等操作系统的的事件处理。Memcached 使用libevent来进行网络并发连接的处理,能够保持在很大并发情况下,仍旧能够保持快速的响应能力。所以安装Memcached需先安装libevent。
一、libevent的安装
基础环境的准备
- wget http://sourceforge.net/projects/levent/files/libevent/libevent-2.0/libevent-2.0.22-stable.tar.gz
- tar -zxvf libevent-2.0.22-stable.tar.gz
- cd libevent-2.0.22-stable
- ./configure --prefix=/application/libevent
- make
- make install
二、Memcache的安装
- wget http://www.memcached.org/files/memcached-1.4.29.tar.gz
- tar -zxvf memcached-1.4.29.tar.gz
- cd memcached-1.4.29
- ./configure --prefix=/application/memcached --with-libevent=/application/libevent
- make
- make install
启动选项介绍:
-p TCP监听端口 (default: 11211)
-U UDP 监听端口 (default: 11211, 0 is off)
-s UNIX socket监听路径,不支持网络
-a UNIX socket访问掩码, 八进制 (default: 0700)
-l <ip_addr> 监听的服务器IP地址 (default: all addresses)
-r 最大限度利用核心文件限制
-u 运行memcached用户
-m 最大的内存使用 (default: 64 MB)
-M 内存耗尽返回错误
-c 最大并发连接 (default: 1024),按照你服务器的负载量来设定。
-k 锁定所有分页内存
-v 输出警告和错误信息
-vv 同时打印客户端请求和返回信息
-vvv 打印内部状态转换信息
-i 打印memcached 和 libevent 版本信息
-P 设置保存pid文件, only used with -d option
-f 块大小增长倍数 (default: 1.25)
-n key+value+flags最小分配空间(default: 48),key+value+flags默认是48
-L 如何有效,尝试使用大内存页。增加内存页大小可以减少失误的TLB数量,提高性能。
-D 指定key和IDs的分隔符 default is “:” (colon). 如果指定此选项,统计信息收集自动开启;
-t 使用的线程数量 (default: 4)
-R 每个事件的最大请求数 (default: 20)
-C 禁止使用 CAS
-b 设置积压队列数限制 (default: 1024)
-B 绑定协议 – one of ascii, binary, or auto (default)
-I 分配给每个slab页(default: 1mb, min: 1k, max: 128m)
服务启动
- memcached -d -m 10 -u root -l 192.168.0.122 -p 11200 -c 256 -P /tmp/memcached.pid
-d 选项是启动一个守护进程,
-m 是分配给Memcache使用的内存数量,单位是MB,这里是10MB
-u 是运行Memcache的用户,这里是root
-l 是监听的服务器IP地址,如果有多个地址的话,这里指定了服务器的IP地址192.168.0.122
-p 是设置Memcache监听的端口,这里设置了12000,最好是1024以上的端口
-c 选项是最大运行的并发连接数,默认是1024,这里设置了256,按照你服务器的负载量来设定
-P 是设置保存Memcache的pid文件
检查服务:
1、查看启动的memcache服务:
netstat -lp | grep memcached
2、查看memcache的进程号(根据进程号,可以结束memcache服务:“kill -9 进程号”)
ps -ef | grep memcached
3、查看状态
对Memcached缓存服务的状态查询,可以先telnet连接上服务:telnet 127.0.0.1 11211 ,然后使用 stats命令查看缓存服务的状态,会返回如下的数据:
- STAT pid 27954
- STAT uptime 139
- STAT time 1427031155
- STAT version 1.4.22
- STAT libevent 2.0.22-stable
- STAT pointer_size 32
- STAT rusage_user 0.005999
- STAT rusage_system 0.011998
- STAT curr_connections 10
- STAT total_connections 11
- STAT connection_structures 11
- STAT reserved_fds 20
- STAT cmd_get 0
- STAT cmd_set 0
- STAT cmd_flush 0
- STAT cmd_touch 0
- STAT get_hits 0
- STAT get_misses 0
- STAT delete_misses 0
- STAT delete_hits 0
- STAT incr_misses 0
- STAT incr_hits 0
- STAT decr_misses 0
- STAT decr_hits 0
- STAT cas_misses 0
- STAT cas_hits 0
- STAT cas_badval 0
- STAT touch_hits 0
- STAT touch_misses 0
- STAT auth_cmds 0
- STAT auth_errors 0
- STAT bytes_read 7
- STAT bytes_written 0
- STAT limit_maxbytes 67108864
- STAT accepting_conns 1
- STAT listen_disabled_num 0
- STAT threads 4
- STAT conn_yields 0
- STAT hash_power_level 16
- STAT hash_bytes 262144
- STAT hash_is_expanding 0
- STAT malloc_fails 0
- STAT bytes 0
- STAT curr_items 0
- STAT total_items 0
- STAT expired_unfetched 0
- STAT evicted_unfetched 0
- STAT evictions 0
- STAT reclaimed 0
- STAT crawler_reclaimed 0
- STAT lrutail_reflocked 0
参数项说明:
time:服务器当前的unix时间戳
total_items:从服务器启动以后存储的items总数量
connection_structures:服务器分配的连接构造数
version:memcache版本
limit_maxbytes:分配给memcache的内存大小(字节)
cmd_get:get命令(获取)总请求次数
evictions:为获取空闲内存而删除的items数(分配给memcache的空间用满后需要删除旧的items来得到空间分配给新的items)
total_connections:从服务器启动以后曾经打开过的连接数
bytes:当前服务器存储items占用的字节数
threads:当前线程数
get_misses:总未命中次数
pointer_size:当前操作系统的指针大小(32位系统一般是32bit)
bytes_read:总读取字节数(请求字节数)
uptime:服务器已经运行的秒数
curr_connections:当前打开着的连接数
pid:memcache服务器的进程ID
bytes_written:总发送字节数(结果字节数)
get_hits:总命中次数
cmd_set:set命令(保存)总请求次数
curr_items:服务器当前存储的items数量