`

cache初学之四 magent代理安装与测试

阅读更多

今天对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、 分别在112121121311214端口启动3Memcached进程,在12000端口开启magent代理程序;

2、 1121211213端口为主Memcached11214端口为备份Memcached

3、 连接上12000magentset key1set key2,根据哈希算法,key1被写入1121311214端口的Memcachedkey2被写入1121311214端口的Memcached

4、 1121211213端口的Memcached死掉,连接到12000端口的magent取数据,数据会从11214端口的Memcached取出;

5、 1121211213端口的Memcached重启复活,连接到12000端口,magent会从1121211213端口的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.

 模拟1121211213端口的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.

 

模拟1121211213端口的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数据库的基础安装步骤、编程基础和高级特性,为初学者和开发者提供宝贵的资源。通过深入学习和实践,你可以掌握Cache数据库的核心技能,实现高效、稳定的应用程序开发。

    dubbo-cache 测试用例

    本测试用例将深入探讨dubbo-cache的配置与LRU(Least Recently Used)缓存策略的使用。 首先,我们要理解dubbo-cache的基本概念。Dubbo的缓存设计主要基于两种模式:本地缓存和远程缓存。本地缓存是在服务提供者的...

    Cache数据库编程和安装指南

    综上所述,Cache数据库作为一种后关系型数据库,在技术和功能上都有其独特之处,尤其是在支持多种数据访问方式、高性能事务处理以及与Java的集成方面表现突出。无论是对于企业级应用还是Web应用,Cache数据库都能够...

    cache性能分析实验

    - **伪相联Cache**:结合直接映射与全相联的优点,通过划分多个独立的直接映射Cache来降低冲突率。 - **硬件预取技术**:预测即将被访问的数据块,提前加载至Cache中。 - **由编译器控制的预取**:通过编译器优化...

    C语言写的测试本机cache大小的程序

    用C语言实现简单的测试单击cache的小程序; 利用大循环 读写cache 运行时间较长。

    ExpressCache安装教程

    **ExpressCache安装教程** ExpressCache是一款优化电脑性能的软件,主要功能是通过在电脑的固态硬盘(SSD)上创建一个高速缓存,来提升传统机械硬盘(HDD)的读取速度,从而提高系统整体运行效率。本文将详细介绍...

    facebook flashcache安装资源

    本资源包提供了在类Unix系统上安装和配置FlashCache所需的步骤和文件。 首先,我们需要了解FlashCache的工作原理。FlashCache将内核模块集成到操作系统中,它监控磁盘的I/O请求,并根据预设的策略决定哪些数据应...

    cache性能分析实验报告.docx

    通过实验,我们可以观察到,Cache性能不仅受到其物理属性的影响,还与软件层面的设计密切相关,如替换算法的选择。LRU算法通常能提供更好的性能,因为它倾向于保留最近频繁使用的数据,但实现上存在挑战,实际应用中...

    cpu cache 测试

    cpu cache 延迟周期 测试 也可以验证cpu cache大小

    logisim及全相联cache设计.rar

    全相联Cache( Fully-Associative Cache)是Cache组织方式的一种,与直接映射Cache和组相联Cache不同,它的每一个块都可以映射到Cache的任何一个位置上,这提供了更大的灵活性,但也带来了更高的复杂性。 全相联...

    Cache测试apk源码

    "Cache测试apk源码"是一个专门用于测试Android设备上可用缓存空间的应用,通过不断占用内存和缓存直至系统强制关闭,从而得知设备的缓存容量。 首先,我们要理解Android中的缓存类型。Android主要使用两种类型的...

    实验五: 虚拟Cache与伪相联Cache

    ### 实验五:虚拟Cache与伪相联Cache #### 实验背景与目标 在现代计算机系统中,提高数据访问速度是提升整体系统性能的关键因素之一。为了缓解CPU与主存之间的速度差异,引入了高速缓存(Cache)技术。本实验旨在...

    cache性能分析及优化实验报告

    2. **不同容量与相联度下**:在不同的Cache容量和相联度设置下进行测试。 3. **分析结果**:记录总失效次数,并计算失效率,进而分析不同替换算法对Cache性能的影响。 通过上述实验步骤,可以深入理解Cache的工作...

    asp.net cache泄漏情景测试

    "asp.net cache泄漏情景测试"是为了检测和预防这种情况而进行的一种实践。 ASP.NET Cache的内存泄漏通常发生在以下几种情况: 1. **无限制的缓存添加**:开发者可能在没有设置过期策略的情况下,不断向缓存中添加新...

    sqlserver与cache通过odbc连接

    ### SQLServer与Cache数据库通过ODBC连接的知识点详解 #### 一、引言 随着企业对数据处理的需求日益增加,不同数据库之间的数据交互变得尤为重要。本文将详细介绍如何通过ODBC(Open Database Connectivity,开放...

    Squid缓存代理服务器的安装与配置(普通代理 透明代理 反向代理)

    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实验cache实验cache实验cache实验...

    odbc-连接cache数据库.rar

    ODBC(Open Database Connectivity)是一种用于访问数据库的应用程序编程接口,它允许应用程序通过标准接口与各种不同的数据库系统交互。在本场景中,我们关注的是如何使用C#通过ODBC连接到Cache数据库。Cache是由...

Global site tag (gtag.js) - Google Analytics