`
ssxxjjii
  • 浏览: 948382 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

memcache总结

 
阅读更多

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

本文出自 “一灯” 博客,请务必保留此出处http://yidengdashi.blog.51cto.com/1125400/663540

分享到:
评论

相关推荐

    memcache资料

    memcache个人总结的资源。。。。。。。。。。。。。。。。。。。。。。。。memcache个人总结的资源。。。。。。。。。。。。。。。。。。。。。。。。memcache个人总结的资源。。。。。。。。。。。。。。。。。。。...

    memcache安装与基本操作详解

    #### 五、总结 通过本文的介绍,您不仅了解了如何安装配置Memcache,还掌握了基本的操作方法。Memcache作为一种高效的缓存解决方案,在提高Web应用性能方面发挥着重要作用。希望本文能帮助您更好地理解和使用...

    Redis和Memcache的区别总结

    1、Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等; 2、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储; 3...

    【汇总】Memcache

    总结来说,Memcache是Web应用提升性能的重要工具,通过理解和掌握其核心原理和使用方法,我们可以更好地利用它来优化我们的系统,提高用户体验。同时,对于有兴趣的开发者,源码分析和工具使用将进一步加深对...

    memcache安装php5.2.17的php_memcache.dll

    总结来说,安装php5.2.17的php_memcache.dll扩展需要下载正确版本的dll文件,修改php.ini,重启服务器,安装和配置Memcache服务,最后通过测试脚本验证安装是否成功。整个过程旨在优化网站性能,减轻数据库压力,...

    windows下安装memcache

    总结,Windows下安装Memcache涉及下载安装包、配置服务、创建服务、设置参数以及在PHP环境中测试连接。虽然过程比在Unix/Linux环境下复杂,但通过以上步骤,你依然能在Windows上享受Memcache带来的高效缓存能力。

    window 7memcache安装组件

    总结,安装和配置Windows 7上的Memcache涉及下载服务端和PHP扩展,设置服务,修改配置文件,以及测试连接。正确完成这些步骤后,你的PHP应用程序就可以充分利用Memcache的缓存能力,提高整体性能。

    Memcache实践总结【转】

    **Memcache实践总结** Memcache是一款高性能的分布式内存对象缓存系统,主要用于减轻数据库的负载,提高Web应用的响应速度。它将数据存储在内存中,以键值对的形式提供快速访问,尤其适用于读多写少的应用场景。...

    memcache 万能

    总结来说,这个“memcache 万能”版本可能是开发者社区中的一种优化解决方案,旨在提高Memcache在各种环境下的兼容性和性能。通过使用php_memcache.dll,开发者可以在PHP应用中无缝集成和利用这个强大的内存缓存系统...

    memcache-3.0.6.tgz

    总结,"memcache-3.0.6.tgz" 提供了 PHP 对 Memcached 的扩展支持,允许开发者在 PHP 应用中利用 Memcached 的高速缓存能力,提升系统性能。正确安装和使用此扩展,可以显著改善应用程序的响应时间和资源利用率。

    memcache 扩展,php5.5 32,64 位,以及其他版本下载地址

    Memcache 是一个高性能的分布式...总结来说,Memcache扩展是PHP与Memcache缓存系统之间的桥梁,适用于优化网站性能,尤其适合处理大量并发请求的高流量网站。确保正确安装和配置该扩展,将有助于提升你的Web应用效率。

    Memcache缓存技术,Memcache配置说明及其文件,PHP5.2.6版本内存缓存技术配置

    总结来说,Memcache是一个高效、轻量级的缓存系统,对于提高PHP应用性能具有重要作用。在PHP5.2.6版本的Windows环境下,正确配置和使用Memcache涉及下载安装服务、启用PHP扩展以及编写代码进行数据交互。掌握这些...

    memcacheclient-2.0

    总结起来,`memcacheclient-2.0`通过修复关键Bug和性能优化,为开发者提供了一个更加可靠、高效的Memcached C++客户端。它的跨平台支持、丰富的API以及异步I/O模型,使其成为C++应用中使用Memcached的理想选择。对于...

    MemCache Client端类库

    总结来说,"MemCache Client端类库"是C++开发者用来与MemCache服务器交互的重要工具。对于VS环境下的开发,适应性和兼容性是关键问题。通过修改和优化,我们可以创建一个定制化的客户端,以满足特定项目的需求,提升...

    memcache配置源代码

    ### 总结 以上就是基于提供的文件信息所涉及的Memcache配置和使用的全部内容。通过这些步骤,你可以了解如何在PHP环境中使用Memcache进行数据缓存,以及如何管理和操作这些数据。Memcache作为一种高效的缓存解决...

    memcache-2.2.6.tgz

    总结来说,Memcache是一个强大的内存缓存系统,通过高效的内存管理和简单的分布式策略,能显著提升Web应用的响应速度。"memcache-2.2.6.tgz"压缩包提供了该版本的源代码,允许开发者自定义编译和部署。理解Memcache...

    php5.4_memcache.dll 64位

    总结这些信息,我们可以了解到这是一套在Windows 64位环境下运行PHP 5.4版本时,用于集成Memcached缓存服务的必要组件。安装并配置这些文件,可以使得PHP应用能够有效地利用Memcached进行数据缓存,提升整体系统性能...

    php_memcache.dll 5.4.12

    总结,`php_memcache.dll 5.4.12`是PHP 5.4.12版本与Memcache交互的关键组件,正确安装和使用该扩展可以有效提升网站性能。同时,与`memcached-client.php`和Memcache服务端结合,可以构建完整的缓存管理体系,为Web...

    php之Memcache的使用

    总结,Memcache是PHP开发中提高网站性能的重要工具,通过理解并熟练掌握其使用方法,可以有效地优化网站架构,降低服务器负载。学习和使用`Memcache-20151006.doc`和`Memcached 原理和使用详解.pdf`文档,将有助于...

Global site tag (gtag.js) - Google Analytics