首页 运维 网络学院 查看内容

memcache总结

2011-9-15 21:37 686 0

摘要:   memcache总结-一灯系列  原理:  内存页Pages分成相同的slab,默认是1M,然后slab在分成不同slab class,然后slab class  分解成chunk,chunk存储...
关键词: nbsp STAT memcache libevent memcached root 次数 php local usr

  memcache总结-一灯系列  原理:  内存页Pages分成相同的slab,默认是1M,然后slab在分成不同slab class,然后slab class  分解成chunk,chunk存储数据。其中slab 1M可以分成多slab class,然后每个slab class中的chunk内存片大小都一样。  所以这就限制了如果你要存储value 不要超过1M。  存储的时候,如果第一次存储80byte的文件,slab 分配一个slab class,然后slab class中分成多个chunk 每个都是80byte  如果第二次再来的80byte的value那么就存入到这个slab class中的任意一个chunk中,如果不是80byte那么,就会安装1.25倍往上乘  直到能容纳该文件的最接近的大小。  经验技巧:  stats  查看memcached状态的基本命令,通过这个命令可以看到如下信息:  STAT pid 22459                             进程ID  STAT uptime 1027046                        服务器运行秒数  STAT time 1273043062                       服务器当前unix时间戳  STAT version 1.4.4                         服务器版本  STAT pointer_size 64                       操作系统字大小(这台服务器是64位的)  STAT rusage_user 0.040000                  进程累计用户时间  STAT rusage_system 0.260000                进程累计系统时间  STAT curr_connections 10                   当前打开连接数  STAT total_connections 82                  曾打开的连接总数  STAT connection_structures 13              服务器分配的连接结构数  STAT cmd_get 54                            执行get命令总数  STAT cmd_set 34                            执行set命令总数  STAT cmd_flush 3                           指向flush_all命令总数  STAT get_hits 9                            get命中次数  STAT get_misses 45                         get未命中次数  STAT delete_misses 5                       delete未命中次数  STAT delete_hits 1                         delete命中次数  STAT incr_misses 0                         incr未命中次数  STAT incr_hits 0                           incr命中次数  STAT decr_misses 0                         decr未命中次数  STAT decr_hits 0                           decr命中次数  STAT cas_misses 0            cas未命中次数  STAT cas_hits 0                            cas命中次数  STAT cas_badval 0                          使用擦拭次数  STAT auth_cmds 0  STAT auth_errors 0  STAT bytes_read 15785                      读取字节总数  STAT bytes_written 15222                   写入字节总数  STAT limit_maxbytes 1048576                分配的内存数(字节)  STAT accepting_conns 1                     目前接受的链接数  STAT listen_disabled_num 0  STAT threads 4                             线程数  STAT conn_yields 0  STAT bytes 0                               存储item字节数  STAT curr_items 0                          item个数  STAT total_items 34                        item总数  STAT evictions 0                           为获取空间删除item的总数  清单 8. 计算缓存命中率  现在,用 get_hits 的数值除以 cmd_gets。在本例中,您的命中率大约是 71%。  在理想情况下,您可能希望得到更高的百分比 — 比率越高越好。  查看统计数据并不时测量它们可以很好地判定缓存策略的效率。  很可能memcached内存不够用,导致新增一条新数据,就丢失一条老的。  设计的时候也需要动静分离,以提高命中率。  stats items  输出各个slab中的item信息。s  stats slabs  输出slab中更详细的item信息  stats sizes  输出所有item的大小和个数  stats cachedump <slab_id> <limit_num>  //有一个查看监控memcache的php页面memecache.php 可以监控memecahe的命中率  1.memcache server端安装配置  yum install gcc* make* php-devel zlib-devel  mkdir -p /application/memcache  # wget http://www.danga.com/memcached/dist/memcached-1.2.0.tar.gz  # wget http://www.monkey.org/~provos/libevent-1.2.tar.gz  2.先安装libevent:  tar zxvf libevent-1.2.tar.gz  cd libevent-1.2  ./configure --prefix=/usr  make  make install  ln -s /usr/lib/libevent-1.2.so.1.0.3 /usr/lib64/libevent-1.2.so.1  3.测试libevent是否安装成功:  # ls -al /usr/lib | grep libevent  lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent-1.2.so.1 -> libevent-1.2.so.1.0.3  -rwxr-xr-x 1 root root 263546 11?? 12 17:38 libevent-1.2.so.1.0.3  -rw-r–r– 1 root root 454156 11?? 12 17:38 libevent.a  -rwxr-xr-x 1 root root 811 11?? 12 17:38 libevent.la  lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent.so -> libevent-1.2.so.1.0.3  4.安装memcached,同时需要安装中指定libevent的安装位置:  tar zxvf memcached-1.2.0.tar.gz  cd memcached-1.2.0  ./configure --with-libevent=/usr  make  make install  如果中间出现报错,请仔细检查错误信息,按照错误信息来配置或者增加相应的库或者路径。  (注:安装的时候出现错误:  1 linux警告:检测到时钟错误。您的创建可能是不完整的  解决方法:  修改当前时间:  [root]#date –s ‘2010/11/5 8:01:00 ‘  将当前系统时间写入CMOS中去  #clock –w  )  安装完成后会把memcached放到 /usr/local/bin/memcached ,  5.测试是否成功安装memcached:  # ls -al /usr/local/bin/mem*  -rwxr-xr-x 1 root root 137986 11?? 12 17:39 /usr/local/bin/memcached  -rwxr-xr-x 1 root root 140179 11?? 12 17:39 /usr/local/bin/memcached-debug  安装Memcache的PHP扩展  1.在http://pecl.php.net/package/memcache 选择相应想要下载的memcache版本。  2.安装PHP的memcache扩展  wget http://pecl.php.net/get/memcache-2.2.1.tgz  tar vxzf memcache-2.2.1.tgz  cd memcache-2.2.1  /usr/local/php/bin/phpize  ./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir  make  make install  以上安装时候错误解决:  1 phpize没有找到  解决方法: centos是默认没有安装php-devel的  yum install php-devel  2 make: *** [memcache.lo] Error 1  没有安装zlib  yum install zlib-devel  3.上述安装完后会有类似这样的提示:  Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-2007xxxx/  4.把php.ini中的extension_dir = “。/”修改为  extension_dir = “/usr/local/php/lib/php/extensions/no-debug-non-zts-2007xxxx/”  5.添加一行来载入memcache扩展:extension=memcache.so  memcached的基本设置:  1.启动Memcache的服务器端:  # /usr/local/bin/memcached -d -m 10 -u root -l 192.168.0.200 -p 12000 -c 256 -P /tmp/memcached.pid  -d选项是启动一个守护进程,  -m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,  -u是运行Memcache的用户,我这里是root,  -l是监听的服务器IP地址,如果有多个地址的话,可以不指定ip不使用该参数  /usr/local/bin/memcached -p 11117 -u nobody -m 600m -d  -p是设置Memcache监听的端口,我这里设置了12000,最好是1024以上的端口,  -c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,  -P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid,  -M不使用LRU算法,该参数最好不要用  (注:  出现错误:/usr/local/bin/memcached: error while loading shared libraries: libevent-1.3.so.1: cannot open shared object file: No such file or directory  直接设置链接  #ln -s /usr/local/libevent/lib/libevent-1.3.so.1 /lib64/libevent-1.3.so.1  )  2.如果要结束Memcache进程,执行:  # kill `cat /tmp/memcached.pid`  也可以启动多个守护进程,不过端口不能重复。  3.重启apache,service httpd restart  Memcache环境测试:  运行下面的php文件,如果有输出This is a test!,就表示环境搭建成功。开始领略Memcache的魅力把!  <?php  $mem = new Memcache;  $mem->connect("192.168.0.200", 12000);  $mem->set('key', 'This is a test!', 0,60);  $val = $mem->get('key');  echo $val;  ?>  或者使用shell  echo "stats"|nc localhost port
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部