Web Polygraph (WebAxe-4) 测试反向代理缓存服务器

由于工作中时常遇到web server/cache的开发工作。一旦做出一些改动,或者添加一些功能,除了功能测试(比如设计一些测试用例)、查看debug信息之外,还需要对整个系统做全面的测试。反向代理服务器和缓存,往往承载着大量的并发请求,对于稳定性的要求很高。这就需要一款比较好的benchmark来进行测试。

 

Web Polygraph是几年前专门为缓存服务器、代理服务器等设计的测试工具。它具有比较完整的测试用例(比如专门为正向代理和反向代理的测试用例)。另外,它还有一套专门的description language (PGL),可以让测试者来定制测试用例。它的测试结果的呈现也是比较强大的,可以在测试的时候指定log路径,并对数据进行分析和整理,然后通过web页面的方式呈现。

 

因为是第一次使用,对于polygraph的语言和配置不是太熟。安装好以后,就直接用了两个虚拟机来跑反向代理的测试用例(WebAxe-4)。第一个虚拟机上面跑了nginx,同时作为反向代理和缓存服务器来使用。第二个虚拟机上面跑polygraph-server和polygraph-client。为什么同时有server和client呢?因为polygraph会模拟用户(client)和源站(server)的行为,polygraph-client会生成一些特定的请求,通过proxy发送给源站,而模拟源站的polygraph-server则会根据配置里面指定的对象大小,生成响应回复给client。client和server一般用同一个配置文件,但是它们用到配置文件的不同部分。另外,配置文件里面有可能会通过#include来调用其他的配置文件,这个时候就需要指定--cfg_dirs参数,否则就会报错。正常情况下,server、client和proxy应该在不同的服务器上,这里为了方便举例,把server和client放在一起。

 

具体的操作如下:

 

1. 把原来的配置文件 WebAxe-4.pg复制了一份到WebAxe-4-test.pg,然后修改里面的参数

 

TheBench = {

        client_side = {

                addr_space = [ 'lo::10.101.1-10.1-250/16' ]; //ip范围可以根据peak request rate再作调整

                hosts = [ '192.168.31.129' ];                          //虚拟机2的IP

        };

        server_side = {

                hosts = [ '192.168.31.129:9090' ]; //虚拟机2的IP

        };

        proxy_side = {

                hosts = [ '172.16.101.32:8080' ]; //虚拟机1的alias IP

        };

};

//以下部分可以按照具体情况来配置

TheBench.peak_req_rate = 500/sec;

rate FillRate = 50%*TheBench.peak_req_rate;

size ProxyCacheSize = 500MB;

size WSS = 1GB;

 

2. 根据上面的配置,client side会自动生成多个agent(假象用户),每个agent会根据情况绑定1个或多个IP,这些IP就是在addr_space里面指定的(其实就是拿这些ip绑定一些alias NIC)。我又给proxy side配置了一个alias,绑定在虚拟机1的eth0(即192.168.31.128的NIC)上。注意:虽然这两个虚拟机的eth0是在同一个网段,因为使用了alias NIC,需要对alias IP做路由配置,这样10.101.0.0/16网段的agent才能和172.16.101.32建立TCP连接。具体的做法,就是使用route命令来生成相应的路由规则。

 

3. 在虚拟机1上的nginx(即被测试的反向代理缓存服务器)上面配置,注意要把upstream xxx {}里面的server(即源站)配成虚拟机2的IP;proxy_cache_path命令的参数max_size也需要和polygraph的size ProxyCacheSize一样。配置好了以后,启动nginx。

 

4. 启动polygraph-server程序,指定--config参数,--cfg_dirs参数和--log参数。如果需要看更多的信息的话,可以设定--verb_lvl参数。

 

5. 启动polygraph-client程序,跟polygraph-server基本一样。

 

6. 正常的话,应该可以看到一些output信息。可以参考http://www.web-polygraph.org/docs/reference/output/console.html。把结果生成html页面,只需要使用polygraph-reporter命令。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值