MemcacheQ(消息队列)

来源:互联网 发布:php用来做什么的 编辑:程序博客网 时间:2024/06/06 03:51
原文地址:MemcacheQ(消息队列)作者:邓强
memcacheQ配置 
 
什么是memcacheQ ? 
memcacheQ是一个基于memcache协议、BDB持久数据存储、高性能轻量级队列服务程序。 特点是: 
1.简单高效,基于memcache协议,这意味着只要客户端支持memcache协议即可使用。 2. 队列数据存储于BDB, 持久保存。3. 并发性能好。 4. 支持多条队列。 
 
并发量较的web环境,特别是数据库写入操作过多的情景,使用队列可大大缓解因并发问题造成的数据库锁死问题。生产环境中使用效果非常好。 
先决条件: 
memcacheQ依赖于libevent,libevent-devel和BDB(BerkleyDB)  
1. 先检查libevent, libevent-devel是否已经安装: 
rpm -qa|greplibevent 
输出中必须包含libevent, libevent-deve,如果缺失,使用以下命令安装: yum install libevent 
yum installlibevent-devel 
安装完毕再复查之:rpm -qa|grep libevent,确保安装正确。 
 
注意事项:libevent,libevent-devel优先使用yum安装源,光盘镜像中的rpm包安装,这样稳定性和兼容性可得到保证,网上流传的使用源码安装libevent的方法会有问题,因为很可能系统已经安装libevent,再使用源码安装, 必然导致冲突,造成意外问题,所以一定要使用上述命令检查系统是否已经安装相应的库。 
2.安装BerkleyDB 
cd/usr/local/src 
wgethttp://219.239.89.57/deploy/db-5.2.28.tar.gz tar zxvfdb-5.2.28.tar.gz cd db-5.2.28 cd build_unix ../dist/configuremake 
makeinstall 
3. 准备安装memcacheQ  cd/usr/local/src 
wgethttp://219.239.89.57/deploy/memcacheq-0.2.0.tar.gz tar zxvfmemcacheq-0.2.0.tar.gz 
cdmemcacheq-0.2.0 
修改configure文件,找到bdbdir="/usr/local/BerkeleyDB.4.7",修改为
bdbdir="/usr/local/BerkeleyDB.5.2",否则执行configure时会产生找不到BDB的错误。
./configure --prefix=/usr/local/memcacheqmake 
makeinstall 
至此,memcacheq安装成功 
 
4.  启动说明 
 /usr/local/memcacheq/bin/memcacheq -h,报错: 
error while loading shared libraries:libdb-5.2.so: cannot open shared object file: No such file ordirectory 
这是因为memcacheq无法找到bdb的共享库文件,按以下方法解决这个问题: 
updatedb 
locate libdb-5.2.so,输出: 
/usr/local/BerkeleyDB.5.2/lib/libdb-5.2.so 
/usr/local/src/db-5.2.28/build_unix/.libs/libdb-5.2.so 
再看看memcacheQ是从哪里寻找libbdb-5.2.so文件的: ldd/usr/local/memcacheq/bin/memcacheq  
linux-vdso.so.1 => (0x00007fff0ff1a000) 
libm.so.6 => /lib64/libm.so.6(0x000000398ec00000) libdb-5.2.so => notfound 
libevent-1.4.so.2 =>/usr/lib64/libevent-1.4.so.2  
libc.so.6 => /lib64/libc.so.6(0x000000398e000000) 
libpthread.so.0 =>/lib64/libpthread.so.0 (0x000000398e800000) libnsl.so.1 =>/lib64/libnsl.so.1 (0x0000003991800000) librt.so.1 =>/lib64/librt.so.1(0x000000398f400000) 
libresolv.so.2 =>/lib64/libresolv.so.2 (0x0000003992800000)/lib64/ld-linux-x86-64.so.2(0x000000398dc00000) 
 
我们发现memcacheq所有库的加载路径均为/lib64,但libbdb-5.2.so状态为not found, 知道这个信息后,我们为libdb-5.2.so建立相应符号链接即可: ln-s /usr/local/BerkeleyDB.5.2/lib/libdb-5.2.so /lib64/libdb-5.2.so 
再运行/usr/local/memcacheq/bin/memcacheq -h,一切正常。 建立数据目录,用于memcacheQ保存数据: mkdir /data/memcacheq启动之 
/usr/local/memcacheq/bin/memcacheq -d -l127.0.0.1 -A 8192 -H /data/memcacheq -B 65535 -N -R -uroot 
 
参数说明: 
-d :以后台服务方式运行 
-l : 设置监听地址及端口(默认端口是22201) -A : 数据页大小 -H :数据保存目录
-B :队列中每条数据的最大长度(字节) 
-N : 使用内存缓冲方式保存数据至磁盘,从而获得极高性能。若无此参数,性能会很差-R : 自动清理过期的日志 
-u : 设置memcacheq进程账号 
测试 
telnet 127.0.0.1 22201stats 
stats queuequit 
 
若测试没有问题,将memcacheQ的启动命令加入到/etc/rc.local中。

本文摘自百度文库。http://wenku.baidu.com/view/12348721ccbff121dd368392.html
0 0
原创粉丝点击