今天对magent进行代理测试
memagent(http://code.google.com/p/memagent/)是一个memcache proxy,它提供的功能及特点有:
1、和每个memcache server保持多个长连接,效果是减少memcache server保持的连接数量及创建销毁连接的开销。不过,memcache本身就支持大并发连接,这个功能也就没什么特别的说道。
2、支持memcache的binary协议命令,实现请求的转发。
3、和memcache一样,基于libevent的事件驱动来处理IO。
4、支持ketama 的一致性hash算法。
5、支持memcache backup集群,当memcache集群有机器挂了,memagent会将get请求转向memcache backup集群。这个功能对于cache的稳定性要求高的场景下会有用武之地。
就提供的功能而言,memagent是个很简单的东西。对于较大的memcache集群,可以考虑搭一套memagent作为proxy使用。
Magent 代理的安装
安装magent到/usr/local/下
cd /usr/local
mkdir magent
解压
[root@localhost tmp]# cd /usr/local/magent
[root@localhost magent]# ls
magent-0.6.tar.gz
[root@localhost magent]# tar zxvf magent-0.6.tar.gz
ketama.c
ketama.h
magent.c
Makefile
安装
[root@localhost magent]# /sbin/ldconfig
[root@localhost magent]# sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile
[root@localhost magent]# make
gcc -Wall -g -O2 -I/usr/local/include -c -o magent.o magent.c
gcc -Wall -g -O2 -I/usr/local/include -c -o ketama.o ketama.c
gcc -Wall -g -O2 -I/usr/local/include -o magent magent.o ketama.o -levent -lm -lm -L/usr/local/lib
配置memcached的服务
[root@localhost /]# memcached -m 1 -u root -d -l 192.168.1.118 -p 11212
[root@localhost /]# memcached -m 1 -u root -d -l 192.168.1.118 -p 11213
[root@localhost /]# memcached -m 1 -u root -d -l 192.168.1.118 -p 11214
启动memagent服务
[root@localhost magent]# ./magent -u root -n 4096 -l 192.168.1.118 -p 12000 -s 192.168.1.118:11212 -s 192.168.1.118:11213 -b 192.168.1.118:11214
Magent 的命令参数
-h this message
-u uid
-g gid
-p port, default is 11211. (0 to disable tcp support)
-s ip:port, set memcached server ip and port
-b ip:port, set backup memcached server ip and port
-l ip, local bind ip address, default is 0.0.0.0
-n number, set max connections, default is 4096
-D don't go to background
-k use ketama key allocation algorithm
-f file, unix socket path to listen on. default is off
-i number, max keep alive connections for one memcached server, default is 20
-v verbose
1、 分别在11212、11213、11214端口启动3个Memcached进程,在12000端口开启magent代理程序;
2、 11212、11213端口为主Memcached,11214端口为备份Memcached;
3、 连接上12000的magent,set key1和set key2,根据哈希算法,key1被写入11213和11214端口的Memcached,key2被写入11213和11214端口的Memcached;
4、 当11212、11213端口的Memcached死掉,连接到12000端口的magent取数据,数据会从11214端口的Memcached取出;
5、 当11212、11213端口的Memcached重启复活,连接到12000端口,magent会从11212或11213端口的Memcached取数据,由于这两台Memcached重启后无数据,因此magent取得的将是空值,尽管11214端口的Memcached还有数据(此问题尚待改进)。
整个测试流程
[root@localhost ~]# telnet 192.168.1.118 12000
Trying 192.168.1.118...
Connected to 192.168.1.118 (192.168.1.118).
Escape character is '^]'.
stats
memcached agent v0.6
matrix 1 -> 192.168.1.118:11212, pool size 0
matrix 2 -> 192.168.1.118:11213, pool size 1
END
set key1 0 0 5
hello
STORED
set key2 0 0 5
world
STORED
quit
Connection closed by foreign host.
[root@localhost ~]# telnet 192.168.1.118 11212
Trying 192.168.1.118...
Connected to 192.168.1.118 (192.168.1.118).
Escape character is '^]'.
get key1
END
get key2
VALUE key2 0 5
world
END
quit
Connection closed by foreign host.
[root@localhost ~]# telnet 192.168.1.118 11213
Trying 192.168.1.118...
Connected to 192.168.1.118 (192.168.1.118).
Escape character is '^]'.
get key1
VALUE key1 0 5
hello
END
get key2
END
quit
Connection closed by foreign host.
[root@localhost ~]# telnet 192.168.1.118 11214
Trying 192.168.1.118...
Connected to 192.168.1.118 (192.168.1.118).
Escape character is '^]'.
get key1
VALUE key1 0 5
hello
END
get key2
VALUE key2 0 5
world
END
quit
Connection closed by foreign host.
模拟11212、11213端口的memcache死掉
[root@localhost ~]# ps -ef | grep memcached
root 5126 1 0 19:14 ? 00:00:00 memcached -m 1 -u root -d -l 192.168.1.118 -p 11212
root 5134 1 0 19:14 ? 00:00:00 memcached -m 1 -u root -d -l 192.168.1.118 -p 11213
root 5142 1 0 19:14 ? 00:00:00 memcached -m 1 -u root -d -l 192.168.1.118 -p 11214
root 5976 5526 0 20:11 pts/1 00:00:00 grep memcached
[root@localhost ~]# kill -9 5126
[root@localhost ~]# kill -9 5134
[root@localhost ~]# telnet 192.168.1.118 12000
Trying 192.168.1.118...
Connected to 192.168.1.118 (192.168.1.118).
Escape character is '^]'.
get key1
VALUE key1 0 5
hello
END
get key2
VALUE key2 0 5
world
END
quit
Connection closed by foreign host.
模拟11212、11213端口的memcache重启复活
[root@localhost ~]# memcached -m 1 -u root -d -l 192.168.1.118 -p 11212
[root@localhost ~]# memcached -m 1 -u root -d -l 192.168.1.118 -p 11213
[root@localhost ~]# telnet 192.168.1.118 12000
Trying 192.168.1.118...
Connected to 192.168.1.118 (192.168.1.118).
Escape character is '^]'.
get key1
END
get key2
END
quit
Connection closed by foreign host.
相关推荐
用C语言实现简单的测试单击cache的小程序; 利用大循环 读写cache 运行时间较长。
cpu cache 延迟周期 测试 也可以验证cpu cache大小
Cache数据库编程和安装指南
有时候我们需要测试android设备可用cache的大小,我这有一份自己写的代码,每点一次Button按钮就会占用1M左右的内存及cache,一直到出现强制关闭,此时就能测试出可用cache的大小了。
1) 运行SimpleScalar模拟器;...6) 分别采用LRU与随机法,在不同的Cache容量、不同的相联度下,运行程序(指明所选的测试程序)统计Cache总失效次数,计算失效率。分析不同的替换算法对Cache性能的影响。
Cache数据库安装及配置,介绍cache数据库的基本使用方法
Squid缓存代理服务器的安装与配置(普通代理 透明代理 反向代理) Squid缓存代理服务器是一种流行的代理服务器和Web缓存服务器软件,广泛应用于提高Web服务器速度、缓存万维网、域名系统和其他网络搜索、帮助网络...
cache实验cache实验cache实验cache实验cache实验cache实验cache实验cache实验cache实验cache实验cache实验cache实验cache实验cache实验cache实验cache实验cache实验cache实验cache实验cache实验cache实验cache实验...
介绍dubbo缓存配置,已经LRU缓存策略的使用.
安装flashcache的资源,运行于类unix系统
MMU与CACHE详解适用于初学者理解CPU MMU, CACHE
相信很多人知道ExpressCache可以让电脑上面只需要安装一个20来G的小msata固态SSD硬盘就可以让整台电脑的读写性能大增,启动时间达到几乎和完全使用SSD硬盘一样的速度(当然还是稍有差距),不过对于平时使用来说,...
asp.net cache泄漏 情景测试 还是用第三方如enterprise library保险点
基于java的开发源码-HTTP代理服务器 Smart Cache.zip 基于java的开发源码-HTTP代理服务器 Smart Cache.zip 基于java的开发源码-HTTP代理服务器 Smart Cache.zip 基于java的开发源码-HTTP代理服务器 Smart Cache.zip ...
ssd+flashcache+sas磁盘性能测试对比
1) 运行SimpleScalar模拟器;...6) 分别采用LRU与随机法,在不同的Cache容量、不同的相联度下,运行程序(指明所选的测试程序)统计Cache总失效次数,计算失效率。分析不同的替换算法对Cache性能的影响。
Linux1 代理服务器 清除代理服务器上cache记录 作为管理员要定期对服务器的cache记录进行清除,这样才能保证用户访问服务器的 速度不受影响。cache(高速缓冲存储器)是一种特殊的存储器子系统,其中保存了频繁 使用...
DB Cache Reloaded插件在进行的测试的时候,作者只与WordPress 2.8的版本进行了测试,由于早期版本太多作者没有进行测试,而wordpress 2.8之前的版本安装此插件,会出现什么情况,还有待测试,如果你的空间使用的是...
Web Farm Framework module version 1.0 External cache module version 1.0 URL Rewrite module version 2.0 ARR.version 2.5
Cache数据库安装及编程相关资料,此类资料很少,希望对大家有帮助。