设为首页收藏本站
开启辅助访问
切换到宽版

创星网络[分享知识 传递快乐]

 找回密码
 立即注册

QQ登录

只需一步,快速开始

用新浪微博登录

只需一步,快速搞定

搜索
查看: 4657|回复: 0
打印 上一主题 下一主题

RHEL 5.4上配置memcache

[复制链接]

我玩的应用:

跳转到指定楼层
楼主
发表于 2012-12-15 22:07:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1. 什么是Memcache
  Memcached是高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度, 目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力。它可以应对任意多个连接,使用非阻塞的网络IO。它的工作机制是在内存中开辟一块空间,然后建立一个HashTable,Memcached管理这些HashTable。
  许多Web应用都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示。但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、网站显示延迟等重大影响。
  Memcached是高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。
  2. Memcache工作原理
  首先 memcached 是以守护程序方式运行于一个或多个服务器中,随时接受客户端的连接操作,客户端可以由各种语言编写,目前已知的客户端 API 包括 Perl/PHP/Python/Ruby/Java/C#/C 等等。客户端在与 memcached 服务建立连接之后,接下来的事情就是存取对象了,每个被存取的对象都有一个唯一的标识符 key,存取操作均通过这个 key 进行,保存到 memcached 中的对象实际上是放置内存中的,并不是保存在 cache 文件中的,这也是为什么 memcached 能够如此高效快速的原因。注意,这些对象并不是持久的,服务停止之后,里边的数据就会丢失。
  与许多 cache 工具类似,Memcached 的原理并不复杂。它采用了C/S的模式,在 server 端启动服务进程,在启动时可以指定监听的 ip,自己的端口号,所使用的内存大小等几个关键参数。一旦启动,服务就一直处于可用状态。Memcached 的目前版本是通过C实现,采用了单进程,单线程,异步I/O,基于事件 (event_based) 的服务方式.使用 libevent 作为事件通知实现。多个 Server 可以协同工作,但这些 Server 之间是没有任何通讯联系的,每个 Server 只是对自己的数据进行管理。Client 端通过指定 Server 端的 ip 地址(通过域名应该也可以)。需要缓存的对象或数据是以 key->value 对的形式保存在Server端。key 的值通过 hash 进行转换,根据 hash 值把 value传递到对应的具体的某个 Server 上。当需要获取对象数据时,也根据 key 进行。首先对 key 进行 hash,通过获得的值可以确定它被保存在了哪台 Server 上,然后再向该 Server 发出请求。Client 端只需要知道保存 hash(key) 的值在哪台服务器上就可以了。
  简单来说,memcache 的工作就是在专门的机器的内存里维护一张巨大的 hash 表,来存储经常被读写的一些数组与文件,从而极大的提高网站的运行效率。
  3. 安装部署
  1. 本机环境
  SYSTEM RHEL 5.4 32bit
  PHP php-5.3.2
  NYSQL mysql-5.1.45。
  2. 所需软件包
  libevent 事件通讯软件 (最新版libevent-1.4.14-stable)
  http://www.monkey.org/~provos/libevent/
  memcache php扩展组件,memcache 客户端(最新版memcache-2.2.5)
  http://pecl.php.net/package/memcache
  memcached memcache服务端(最新版 memcached-1.4.0)  
  http://danga.com/memcached/dist/
  3. 安装
  1. 安装libevent
  #tar -zxf libevent-1.4.14a-stable.tar.gz
  #cd libevent-1.4.14-stable/
  #./configure --prefix=/usr/local/libevent
  #make && make install
  #系统可能已经安装有rpm包的libevent,但建议使用源码包的libevent
  2. 安装memcached
  #tar -zxf memcached-1.4.0.tar.gz
  #cd memcached-1.4.0
  #./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent
  #make && make install
  #建立memcache用户   
#useradd –M memcache
  #启动服务   
#memcached -d -m 10 -u memcache -l 192.168.10.3 -p 11211 -c 256 -P /tmp/memcached.pid     
参数说明
  ? -p 指定端口号(默认11211)
  ? -m 指定最大使用内存大小(默认64MB)
  ? -t 线程数(默认4)
  ? -l 连接的IP地址, 默认是本机
  ? -d 选项是启动一个守护进程
  ? -d restart|stop重启|关闭正在运行的memcached服务
  ? -m 最大内存使用,单位MB。默认64MB   
  ? -M 内存耗尽时返回错误,而不是删除项
  ? -c 选项是最大运行的并发连接数,默认是1024,按照你服务器的负载量来设定
  ? -f 块大小增长因子,默认是1.25
  ? -n 最小分配空间,key+value+flags默认是48
  ? -P是设置保存Memcache的pid文件
  设置开机自启动memcache
  vi /etc/rc.local
  /usr/local/memcached/bin/memcached -d -m 100 -u memcache -l 192.168.10.3 -p 11211 -c 256 -P /tmp/memcached.pid
  关闭 memcache
  # kill `cat /tmp/memcached.pid`
  3. 安装memcache php扩展模块
  #tar -zxf memcache-2.2.5.tgz   
#cd memcache-2.2.5
  #find / -name phpize #确定phpize位置,生成编译环境
  #/usr/local/php/bin/phpize   
#./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir     
#make && make install
  此时你会看到如下提示:
  Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/
  你修改php.ini,做如下2步操作:
  ; extension_dir = "./"
  将上面这行修改为
  extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/"
  再新增加一行,内容如下:
  extension=memcache.so
  #重启apache服务
  #/usr/local/apache-2.15/bin/apachectl restart
  测试是否安装成功
  #编辑首页信息,简单测试了如下2种情况
  vi index.php
  <?php
  phpinfo()
  ?>
  

  vi index.php
  <?php   
$mem = new Memcache;     
$mem->connect("192.168.10.3", 11211)or die ("Could not connect");     
$mem->set('key', 'This is a test!', 0, 60);     
$val = $mem->get('key');     
echo $val;     
?>
  #未启用memcache时
  
  #su – memcache
  #/usr/local/bin/memcached –d   (不加参数表示以默认方式启动)
  
  
  4. 安装memcache 小工具
  #wget http://livebookmark.net/memcachephp/memcachephp.zip
  #unzip memcachephp.zip
  #mv memcache.php /usr/local/apache-2.15/htdocs/
  #vi /usr/local/apache-2.15/htdocs/memcache.php
  根据你的配置修改:
  
  
  

  4. 常见问题:
  1. /usr/local/bin/memcached: error while loading shared libraries: libevent-1.4.so.1: cannot open shared object file: No such file or directory ,缺少库文件的解决方法。
  1.1. 首先 find / -name libevent-1.4.so.1 找到缺少的链接文件到底在那儿。
  #find / -name libevent-1.4.so.1   
/usr/local/src/libevent-1.4.14-stable/.libs/libevent-1.4.so.1     
/usr/local/libevent/lib/libevent-1.4.so.1
  1.2. 查看出错原因在哪
  #LD_DEBUG=libs /usr/local/bin/memcached -v   
     10617:     find library=libevent-1.4.so.1 [0]; searching     
     10617:      search cache=/etc/ld.so.cache     
     10617:      search path=/lib/tls/i686/sse2:/lib/tls/i686:/lib/tls/sse2:/lib/tls:/lib/i686/sse2:/lib/i686:/lib/sse2:/lib:/usr/lib/tls/i686/sse2:/usr/lib/tls/i686:/usr/lib/tls/sse2:/usr/lib/tls:/usr/lib/i686/sse2:/usr/lib/i686:/usr/lib/sse2:/usr/lib            (system search path)     
     10617:       trying file=/lib/tls/i686/sse2/libevent-1.4.so.1     
     10617:       trying file=/lib/tls/i686/libevent-1.4.so.1     
     10617:       trying file=/lib/tls/sse2/libevent-1.4.so.1     
     10617:       trying file=/lib/tls/libevent-1.4.so.1     
     10617:       trying file=/lib/i686/sse2/libevent-1.4.so.1     
     10617:       trying file=/lib/i686/libevent-1.4.so.1     
     10617:       trying file=/lib/sse2/libevent-1.4.so.1     
     10617:       trying file=/lib/libevent-1.4.so.1     
     10617:       trying file=/usr/lib/tls/i686/sse2/libevent-1.4.so.1     
     10617:       trying file=/usr/lib/tls/i686/libevent-1.4.so.1     
     10617:       trying file=/usr/lib/tls/sse2/libevent-1.4.so.1     
     10617:       trying file=/usr/lib/tls/libevent-1.4.so.1     
     10617:       trying file=/usr/lib/i686/sse2/libevent-1.4.so.1     
     10617:       trying file=/usr/lib/i686/libevent-1.4.so.1     
     10617:       trying file=/usr/lib/sse2/libevent-1.4.so.1     
     10617:       trying file=/usr/lib/libevent-1.4.so.1     
     10617:     
/usr/local/bin/memcached: error while loading shared libraries: libevent-1.4.so.1: cannot open shared object file: No such file or directory
  1.3. 通过trying file=/usr/lib/libevent-1.4.so.1得知我们需要做个软连接到这,因为这个文件的真实位置在 /usr/local/lib/libevent-1.4.so.2
  #ln -s /usr/local/libevent/lib/libevent-1.4.so.1 /usr/lib/libevent-1.4.so.1
  1.4. 错误消除,类似的问题都可以这样解决。
   
from:http://go.cxweb.com.cn/tdddb

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|创星网络 ( 苏ICP备11027519号|网站地图  

GMT+8, 2024-9-22 07:01 , Processed in 0.085985 second(s), 23 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表