PS:Memcached是由Danga Interactive开发的,高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。
-
系统操作环境的设置
系统初始化设置请参考—>centos系统初始化
Memcached官网#软件安装包存储: /usr/local/src /usr/local/memcached memcached安装目录
#为方便查找目录,设置变量 # vi .bashrc alias worksrc='cd /usr/local/src;ls' 配置生效 # source .bashrc
-
安装依赖库libevent
#下载安装libevent [root@local ~] worksrc; [root@local ~] wget http://cloud.github.com/downloads/libevent/libevent/libevent-2.0.19-stable.tar.gz; [root@local ~] tar -zxvf libevent-2.0.19-stable.tar.gz; [root@local ~] cd libevent-2.0.19-stable; [root@local ~] ./configure --prefix=/usr/local; [root@local ~] make && make install; #命令汇总: worksrc; wget http://cloud.github.com/downloads/libevent/libevent/libevent-2.0.19-stable.tar.gz; tar -zxvf libevent-2.0.19-stable.tar.gz; cd libevent-2.0.19-stable; ./configure --prefix=/usr/local; make && make install;
基于libevent的事件处理libevent是一套跨平台的事件处理接口的封装,能够兼容包括这些操作系统:Windows/Linux/BSD/Solaris 等操作系统的的事件处理.
包装的接口包括:poll、select(Windows)、epoll(Linux)、kqueue(BSD)、/dev/pool(Solaris)
Memcached 使用libevent来进行网络并发连接的处理,能够保持在很大并发情况下,仍旧能够保持快速的响应能力 -
安装memcached服务器
#下载安装memcached [root@local ~] worksrc; [root@local ~] wget http://www.memcached.org/files/memcached-1.4.20.tar.gz; [root@local ~] tar -zxvf memcached-1.4.20.tar.gz; [root@local ~] cd memcached-1.4.20; [root@local ~] ./configure --prefix=/usr/local/memcached; [root@local ~] make && make install; #命令汇总 worksrc; wget http://www.memcached.org/files/memcached-1.4.20.tar.gz; tar -zxvf memcached-1.4.20.tar.gz; cd memcached-1.4.20; ./configure --prefix=/usr/local/memcached; make && make install;
-
启动memcahed服务器
/usr/local/memcached/bin/memcached -d -m128 -u root -p 11211
memcached 1.4.15 命令文档
-p num 监听的TCP端口(默认: 11211) -U num 监听的UDP端口(默认: 11211, 0表示不监听) -s file 用于监听的UNIX套接字路径(禁用网络支持) -a mask UNIX套接字访问掩码,八进制数字(默认:0700) -l ip_addr 监听的IP地址.(默认:INADDR_ANY,所有地址) -d 作为守护进程来运行. -r 最大核心文件限制. -u username 设定进程所属用户.(只有root用户可以使用这个参数) -m num 单个数据项的最大可用内存,以MB为单位.(默认:64MB) -M 内存用光时报错.(不会删除数据) -c num 最大并发连接数.(默认:1024) -k 锁定所有内存页.注意你可以锁定的内存上限. 试图分配更多内存会失败的,所以留意启动守护进程时所用的用户可分配的内存上限. (不是前面的 -u username> 参数;在sh下,使用命令"ulimit -S -l NUM_KB"来设置.) -v 提示信息(在事件循环中打印错误/警告信息.) -vv 详细信息(还打印客户端命令/响应) -vvv 超详细信息(还打印内部状态的变化) -h 打印这个帮助信息并退出. -i 打印memcached和libevent的许可. -P file 保存进程ID到指定文件,只有在使用 -d 选项的时候才有意义. -f factor 块大小增长因子.(默认:1.25) -n bytes 分配给key+value+flags的最小空间(默认:48) -L 尝试使用大内存页(如果可用的话).提高内存页尺寸可以减少"页表缓冲(TLB)"丢失次数,提高运行效率. 为了从操作系统获得大内存页,memcached会把全部数据项分配到一个大区块. -D char 使用
作为前缀和ID的分隔符. 这个用于按前缀获得状态报告.默认是":"(冒号). 如果指定了这个参数,则状态收集会自动开启;如果没指定,则需要用命令"stats detail on"来开启. -t num 使用的线程数(默认:4) -R 每个连接可处理的最大请求数. -C 禁用CAS. -b 设置后台日志队列的长度(默认:1024) -B 绑定协议 - 可能值:ascii,binary,auto(默认) -I 重写每个数据页尺寸.调整数据项最大尺寸 实例:/usr/local/bin/memcached -d -m 1024 -u root -l 192.168.1.10 -p 12001 -c 256 -P /tmp/memcached.pid
参数说明:
-d 选项是启动一个守护进程,
-m 是分配给Memcache使用的内存数量,单位是MB,这里是1GB,
-u 是运行Memcache的用户,这里是root,
-l 是监听的服务器IP地址,如果有多个地址的话,以逗号隔开.这里指定了服务器的IP地址192.168.13.236,
-p 是设置Memcache监听的端口,我这里设置了12001,最好是1024以上的端口,
-c 选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,
-P 是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid -
结束Memcache进程
# ps -aux | grep memcache root 10568 0.0 0.1 331028 1204 ? Ssl 15:31 0:00 /usr/local/memcached/bin/memcached -d -m128 -u root -p 11211 root 10677 0.0 0.0 103240 876 pts/3 S+ 16:03 0:00 grep memcach* #然后直接kill掉memcache进程10568 kill -9 10568
-
编写Memcached启动脚本
[root@local ~] vim /etc/init.d/memcached #!/bin/bash # author:kuangl # date:2013-05-30 # description: Starts and stops the Memcached services. # pidfile: /tmp/memcached1.pid # config: /usr/local/memcached # chkconfig: - 55 45 # source function library . /etc/rc.d/init.d/functions #设置memcached命令路径 memcached="/usr/local/memcached/bin/memcached" [ -e $memcached ] || exit 1 start() { echo "Starting memcached:" #修改自己设置的启动参数 daemon $memcached -d -m 1000 -u root -p 11211 } stop() { echo "Shutting down memcached" killproc memcached } case "$1" in start) start ;; stop) stop ;; restart) stop sleep 3 start ;; *) echo $"Usage: $0 {start|stop|restart}" exit 1 esac exit $? #增加启动权限 chmod a+x /etc/init.d/memcached
将memcached加入系统启项
[root@local ~] chkconfig --add memcached [root@local ~] chkconfig --level 35 memcached on
-
一机多Memcached服务端
可以启动多个守护进程,但是端口不能一样.这样就可以在一台机器上拥有多个Memcached服务器端
-
当前memcahed服务端的状态
首先用telnet 127.0.0.1 11211这样的命令连接上memcache,然后直接输入stats就可以得到当前此端口memcached服务端的状态
#这些状态的说明如下: 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 当前线程数