memcached部署

dreamlan 贡献于2015-07-09

作者 dm  创建于2014-05-14 06:49:00   修改者dm  修改于2014-06-04 01:51:00字数3074

文档摘要:概述本文档目的是辅助个人学习部署和测试memcached。memcached服务器的典型配置
关键词:

概述 本文档目的是辅助个人学习部署和测试memcached。 memcached服务器的典型配置 · CPU: >1GHz · 内存:>2GB · 硬盘:>8GB · 操作系统:Linux(x86_64) 软件环境说明 软件名称 备注 Centos6.5 x64 libevent memcached Linux下安装 1、软件下载 libevent下载地址: https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz memcached下载地址: http://memcached.org/files/memcached-1.4.20.tar.gz 2、软件安装 首先,memcached是基于libevent的,所以确保你的系统已经装了libevent,libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能封装成统一的接口。即使对服务器的连接数增加,也能发挥O(1)的性能。 memcached使用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能。 安装libevent # tar xzvf libevent-2.0.21-stable.tar.gz ##解压 # cd libevent-2.0.21-stable # ./configure --prefix=/usr # make # make install 安装完后可以查看下/usr/lib是否有libevent等文件(ls -al /usr/lib | grep libevent) 安装memcached # tar xzvf memcached-1.4.20.tar.gz # cd memcached-1.4.20 # ./configure --with-libevent=/usr # make # make install 安装结果(ls -al /usr/local/bin/memcached)如图: 启动memcached #/usr/local/bin/memcached -d -m 1024 -u root -p 11211 -P /tmp/memcached.pid 启动后查看进程: 说明已经正常启动。 常用推荐启动配置 方式一:内存为2G memcached -d -u root -m 1024 -p 11211 -c 2048 -P /tmp/memcached.pid 方式二:内存4G以上 memcached -d -u root -m 3000 -p 11211 -c 30720 -P /tmp/memcached.pid 启动过程中所用选项说明如下: -p,使用的TCP端口。默认为11211。 -m,最大内存大小。默认为64MB。 -vv,以very vrebose模式启动,将调试信息和错误输出到控制台。 -d,作为守护进程在后台运行。 -c,最大运行的并发连接数,默认是1024,按照服务器的负载量来设定。 -P,设置保存Memcache的pid文件。 -l,绑定地址(默认:所有都允许,无论内外网或者本机更换IP,有安全隐患,若设置为127.0.0.1就只能本机访问)。 -u,运行Memcached的用户,默认不能由root用户启动,所以当前用户为root用户时,需要利用-u参数来指定。 -f,块大小增长因子,默认是1.25,根据存入的数据的大小可进行调整。 分布式部署 memcached 虽然称为 “ 分布式 ” 缓存服务器,但服务器端并没有 “ 分布式 ” 功能。每个服务器都是完全独立和隔离的服务。 memcached 的分布式,则是完全由客户端程序库实现的。 这种分布式是 memcached 的最大特点。所以部署时以相同的方式在不同服务器上安装部署即可。 监控 一个简单的命令行工具memcache-top 下载网址:http://code.google.com/p/memcache-top/ 下载之后放在/root/soft目录下 运行命令: perl memcache-top-v0.6 --instances=ip:端口号,ip:端口号 两台服务器: perl /root/soft/memcache-top-v0.6 --instances=192.168.175.100:11211,192.168.175.100:11211 运行效果如下: daemontools: 监视memcached进程并自动启动. 网址:http://cr.yp.to/daemontools.html 通常情况下memcached运行得相当稳定,但也不排除因为一些不可预知的因素导致memcached进程死掉,而又不能及时的发现重启。架构上保证了即使有几台memcached故障 也不会影响服务,不过对于memcached进程死掉的服务器,只要重新启动memcached,就可以正常运行,所以采用了监视memcached进程并自动启动的方法。于是使用了daemontools。 这里不介绍daemontools的安装了。我使用了以下的run脚本来启动memcached。 #!/bin/sh exec 2>&1 exec /usr/local/bin/memcached -d -u root -m 1024 -p 11211 -c 2048 -P /tmp/memcached.pid 测试 服务端: 两台服务器,各启动两个进程,分配200M内存 启动参数: /usr/local/bin/memcached -d -m 200 -u root -p 11211 /usr/local/bin/memcached -d -m 200 -u root -p 11212 监控启动: perl /root/soft/memcache-top-v0.6 --instances=192.168.175.100:11211,192.168.175.100:11212,192.168.175.101:11211,192.168.175.101:11212 基于spymemcached测试 1、 打开监控 2、 往memcached插入10000条数据 MemcachedClient c=new MemcachedClient( AddrUtil.getAddresses( "192.168.175.100:11211 192.168.175.100:11212 192.168.175.101:11211 192.168.175.101:11212")); for(int i=0;i<10000;i++){ c.set("key_"+i, 3600, "value_"+i); } 插入数据之后监控画面: 4个memcached服务都存在,读取监控也同上图。 取值代码: MemcachedClient c=new MemcachedClient( AddrUtil.getAddresses( "192.168.175.100:11211 192.168.175.100:11212 192.168.175.101:11211 192.168.175.101:11212")); for(int i=0;i<10000;i++){ String key = "key_"+i; Object obj = c.get(key); System.out.println(key+"="+obj); } 3、 重启服务101:11212,再读取这10000个值,监控结果如下 说明某台服务器的数据丢失之后不会影响其它服务器的数据和读取。 4、 去掉某台服务,再读取这10000个值,监控结果如下 去掉服务101:11212,获取监控如下: 增加一个新的服务,101:11213,获取监控如下: 可见,节点的变化会影响命中率。

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档