首页 > 互联网技术 > memcached的安装和启动

memcached的安装和启动

2009年9月17日 2,676 views 发表评论 阅读评论
在一个典型的生产环境,扩展性最需要解决的一个问题是访问信息的速度,对于频繁访问的信息,使用mysql可能较慢,因为每一次访问都需要经过执行sql查询和重获信息,这样效率不高.且由于锁,会导致查询缓慢,降低重获信息的速度.
memcached是一个简单的,高扩展的基于键的缓存.由于值存储在内存中,所以速度非常快.相对于从数据库读取数据,是一个性能上的飞跃,相对于mysql db,memcached还可以存储任意数据,包括复杂的 生成代价较高的数据结构(现在,随时可用,不用昂贵的重构数据),这样有助于大大降低数据库的负荷.
典型的使用办法 是更改你的应用,不从数据库而是从memcached提供的cache去读取数据,如果数据未存储于Memcached,那么就查询数据库获取数据,然后把值缓存于memcached.只要cache中的数据不过期或被删除,后续的访问,就可以从cache中读取数据,从而大大减少对数据库的访问.
当我们配置了memcached servers,客户端通过算法选择要连接的memcached server读取数据. 请求数据的key经过hash后,用hash后的值去选择memcached servers其中的一台server,同样的key会生成同样的hash值.所以数据是分布于各台memcached server里的.即是我们的分布式的,基于内存的cache. memcached组中的其中1个或多个实例失败,数据可以从数据库中再生成,所以这是一个冗余性的架构.
下载地址: http://memcached.org/
wget http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz
1.memcached安装
gunzip -c memcached-1.2.5.tar.gz | tar xf -
cd memcached-1.2.5
./configure --prefix=/home/garychen/app/memcached
make
make install
一些编译选项:
–with-libevent
如果你安装了libevent,但是configure找不到,那么可以用这个选项指定libevent的位置
—————
安装libevent.
wget http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz
tar zxvf  libevent-1.4.13-stable.tar.gz
cd libevent-1.4.13-stable
./configure
make
make install
————————————————-
–enable-64bit
编译64bit版本的memcached
–enable-threads
对于多cpu(core)的系统,enable多线程支持,这将改善重负荷下的响应时间.使用一个锁定机制来防止不同的线程覆盖or更新同一个值.
但由于各线程需要一个全局的锁,来同步操作,需要你依据你的负荷来测试验证多少个线程能达致最优性能.
每个线程使用自身的livevent实例.对于tcp/ip连接,每个连接由监听分配到活动的线程(轮询)处理;对于udp连接,所有线程监听一个udp socket,由不那么忙的线程来处理请求,这样可能导致增长cpu开销,因为线程将从sleep状态醒来等待处理request.
–enable-dtrace
memcached包含一些DTrace(动态跟踪)线程 可用来监视和衡量memcached实例. 关于DTrace,可google之.
2.memcacached的启动.
默认启动 ./memcached    #64M内存,监听11211端口,支持最大1024个并发连接.
一般我们采用命令行方式启动,如:
memcached -d -m 1024 -p 11121 -l 192.168.0.110 -c 4096
opensolaris下,memcached由smf控制.如:root-shell> svcadm enable memcached
memcached支持以下选项:
常用的
-u user 如果以root方式启动,指定运行Memcached的用户
-m memory  设置分配给memcached的内存,默认64M,不要设置超过内存的限制.使用swap会极大降低性能
-l interface 设置监听的网络接口/地址  ,支持Ipv6
-p port 设置监听的tcp端口,默认18080
-d 设置dameon方式启动
不常用的
-U port 设置UDP端口,默认11211
-s socket 设置unix socket文件监听请求
-a mask  设置监听unix socket的access mask,default is 0700
-c connections 设置最大的并发连接,默认是1204
-t threads 设置线程数,默认是4个.
-r 设置core dump的size 当崩溃的时候dump内存空间到硬盘上.
-M 当内存耗尽时,返回错误给客户端而不是移除不常用的key.
-k 锁定所有内存页到内存中. 在使用之前就预分配内存. 而默认是一个新item存储入cache才分配一个新slab. 我们可以看到刚启动的memcached,如下.
[garytest]$ free
total       used       free     shared    buffers     cached
Mem:      12298476   12225596      72880          0     148224    7475736
-/+ buffers/cache:    4601636    7696840
Swap:      2233024      86152    2146872
虽然cache分配了蓝色的7475736,但红色7696840表示仍然有大量未被使用的cache.
-v 详细模式,当执行main event loop时,打印错误和警告
-vv very详细模式.除了-v,还增加打印每个客户端命令和响应.
-vvv 极度详细模式.
-i 显示the memcached and libevent许可
-b 设置backlog队列限制,默认是1024
-P pidfile路径
-f 设置chunk size 增长系数.当分配一个新的内存chunk,分配的size将是default slab size * 增长系数. #我未验证.
-n bytes 分配的最小空间,for key+value+flags
-L enable大内存页(需os支持),开启这个选项可以使memcached分配large chunk,这可以减少访问内存的misses,从而提高性能.
-C Disable the use of compare and swap (CAS) operations. (1.3.x.)
-d char 设置key前缀和IDs的分隔符.This is used for the per-prefix statistics reporting .默认是(:).如果这个选项开启,统计自动开启.如果没有使用,你也可以发布stats detail on给server开启统计. (1.3.x)
-R Num 设置每个event处理的request数量,默认是20.
-B protocol 设置绑定协议,默认的memcached协议for客户端连接. 可选项为:ascii,binary,auto. 默认是auto (1.4.0)
参考:
[bin]$ ./memcached -help
memcached 1.2.8
-p <num>      TCP port number to listen on (default: 11211)
-U <num>      UDP port number to listen on (default: 11211, 0 is off)
-s <file>     unix socket path to listen on (disables network support)
-a <mask>     access mask for unix socket, in octal (default 0700)
-l <ip_addr>  interface to listen on, default is INDRR_ANY
-d            run as a daemon
-r            maximize core file limit
-u <username> assume identity of <username> (only when run as root)
-m <num>      max memory to use for items in megabytes, default is 64 MB
-M            return error on memory exhausted (rather than removing items)
-c <num>      max simultaneous connections, default is 1024
-k            lock down all paged memory.  Note that there is a
limit on how much memory you may lock.  Trying to
allocate more than that would fail, so be sure you
set the limit correctly for the user you started
the daemon with (not for -u <username> user;
under sh this is done with ‘ulimit -S -l NUM_KB’).
-v            verbose (print errors/warnings while in event loop)
-vv           very verbose (also print client commands/reponses)
-h            print this help and exit
-i            print memcached and libevent license
-P <file>     save PID in <file>, only used with -d option
-f <factor>   chunk size growth factor, default 1.25
-n <bytes>    minimum space allocated for key+value+flags, default 48
-R            Maximum number of requests per event
limits the number of requests process for a given con nection
to prevent starvation.  default 20
-b            Set the backlog queue limit (default 1024)
 » 转载保留版权:老陈 » 《memcached的安装和启动》
 » 如果喜欢可以: 点此订阅本站
分类: 互联网技术 标签: ,
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.