今天对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.
相关推荐
总之,这个压缩包中的资料将涵盖Cache数据库的基础安装步骤、编程基础和高级特性,为初学者和开发者提供宝贵的资源。通过深入学习和实践,你可以掌握Cache数据库的核心技能,实现高效、稳定的应用程序开发。
**ExpressCache安装教程** ExpressCache是一款优化电脑性能的软件,主要功能是通过在电脑的固态硬盘(SSD)上创建一个高速缓存,来提升传统机械硬盘(HDD)的读取速度,从而提高系统整体运行效率。本文将详细介绍...
本测试用例将深入探讨dubbo-cache的配置与LRU(Least Recently Used)缓存策略的使用。 首先,我们要理解dubbo-cache的基本概念。Dubbo的缓存设计主要基于两种模式:本地缓存和远程缓存。本地缓存是在服务提供者的...
Cache数据库安装及配置,介绍cache数据库的基本使用方法
综上所述,Cache数据库作为一种后关系型数据库,在技术和功能上都有其独特之处,尤其是在支持多种数据访问方式、高性能事务处理以及与Java的集成方面表现突出。无论是对于企业级应用还是Web应用,Cache数据库都能够...
用C语言实现简单的测试单击cache的小程序; 利用大循环 读写cache 运行时间较长。
本资源包提供了在类Unix系统上安装和配置FlashCache所需的步骤和文件。 首先,我们需要了解FlashCache的工作原理。FlashCache将内核模块集成到操作系统中,它监控磁盘的I/O请求,并根据预设的策略决定哪些数据应...
- **伪相联Cache**:结合直接映射与全相联的优点,通过划分多个独立的直接映射Cache来降低冲突率。 - **硬件预取技术**:预测即将被访问的数据块,提前加载至Cache中。 - **由编译器控制的预取**:通过编译器优化...
2. **不同容量与相联度下**:在不同的Cache容量和相联度设置下进行测试。 3. **分析结果**:记录总失效次数,并计算失效率,进而分析不同替换算法对Cache性能的影响。 通过上述实验步骤,可以深入理解Cache的工作...
通过实验,我们可以观察到,Cache性能不仅受到其物理属性的影响,还与软件层面的设计密切相关,如替换算法的选择。LRU算法通常能提供更好的性能,因为它倾向于保留最近频繁使用的数据,但实现上存在挑战,实际应用中...
在本文中,我们将深入探讨如何在一台宏基(Acer)笔记本上,基于Windows 7操作系统,安装并配置IRST(Intel Rapid Start Technology)和ExpressCache,以实现更快的启动速度和系统响应。这两个技术都是为了优化电脑...
cpu cache 延迟周期 测试 也可以验证cpu cache大小
全相联Cache( Fully-Associative Cache)是Cache组织方式的一种,与直接映射Cache和组相联Cache不同,它的每一个块都可以映射到Cache的任何一个位置上,这提供了更大的灵活性,但也带来了更高的复杂性。 全相联...
"Cache测试apk源码"是一个专门用于测试Android设备上可用缓存空间的应用,通过不断占用内存和缓存直至系统强制关闭,从而得知设备的缓存容量。 首先,我们要理解Android中的缓存类型。Android主要使用两种类型的...
### 实验五:虚拟Cache与伪相联Cache #### 实验背景与目标 在现代计算机系统中,提高数据访问速度是提升整体系统性能的关键因素之一。为了缓解CPU与主存之间的速度差异,引入了高速缓存(Cache)技术。本实验旨在...
"asp.net cache泄漏情景测试"是为了检测和预防这种情况而进行的一种实践。 ASP.NET Cache的内存泄漏通常发生在以下几种情况: 1. **无限制的缓存添加**:开发者可能在没有设置过期策略的情况下,不断向缓存中添加新...
### SQLServer与Cache数据库通过ODBC连接的知识点详解 #### 一、引言 随着企业对数据处理的需求日益增加,不同数据库之间的数据交互变得尤为重要。本文将详细介绍如何通过ODBC(Open Database Connectivity,开放...
Squid缓存代理服务器的安装与配置(普通代理 透明代理 反向代理) Squid缓存代理服务器是一种流行的代理服务器和Web缓存服务器软件,广泛应用于提高Web服务器速度、缓存万维网、域名系统和其他网络搜索、帮助网络...
ODBC(Open Database Connectivity)是一种用于访问数据库的应用程序编程接口,它允许应用程序通过标准接口与各种不同的数据库系统交互。在本场景中,我们关注的是如何使用C#通过ODBC连接到Cache数据库。Cache是由...