由于工作中时常遇到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命令。

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

  1. squid 3 反向代理 缓存服务器 安装配置精华指南 by lbj

    squid-3.0.STABLE21 安装配置 by lbj 作用:作为反向代理/缓存服务器 系统:redhat linux 企业版 5.4 linux 要有gcc编译器,使用squid-3.0.ST ...

  2. nginx反向代理缓存服务器构建

    博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 代理服务可简单的分为正向代理和反向代理: ...

  3. 【推荐】如何用 Nginx 构建反向代理缓存服务器?

    作者:一盏烛光,贤牛特邀工程师. 防伪码:曾经沧海难为水,除却巫山不是云. 代理服务可简单的分为正向代理和反向代理: 正向代理: 用于代理内部网络对 Internet 的连接请求(如×××/NAT), ...

  4. NGINX做反向代理缓存服务器原理

    代理服务可以简单的分为正向代理和反向代理 正向代理: 用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标web服务器的HTTP请求先发送到 ...

  5. nginx反向代理+缓存开启+url重写+负载均衡(带健康探测)的部署记录

    在日常运维工作中,运维人员会时常使用到nginx的反向代理,负载均衡以及缓存等功能来优化web服务性能. 废话不多说,下面对测试环境下的nginx反向代理+缓存开启+url重写+负载均衡(带健康探测) ...

  6. 转-架构高性能网站秘笈(四)——反向代理缓存

    转自CSDN博客,u010425776,http://m.blog.csdn.net/u010425776/article/details/51096468 什么是反向代理? 在介绍"反向代 ...

  7. NGINX反向代理缓存

    NGINX反向代理缓存 四月 13, 2011 网上好多文章都是多台服务器 做缓存 然后反向代理到后台服务器 不过作为一个穷人哪来那么多服务器 所以我们要让NGINX既做WEB服务器也做缓存.. 这样 ...

  8. 解决nginx反向代理缓存不起作用的问题

    解决nginx反向代理缓存不起作用的问题 参考文章: (1)解决nginx反向代理缓存不起作用的问题 (2)https://www.cnblogs.com/dudu/p/4597351.html 备忘 ...

  9. nginx配置反向代理缓存

    说明 最近运维一个网站里面含有不经常变化的小图片,而每次请求都需要调用file接口获取不太合适.所以就想利用nginx的反向代理缓存来减轻服务接口的请求压力. 工作原理 Nginx反向代理缓存,当客户 ...

  10. Nginx缓存以及反向代理缓存设置

    expires指令 (1).expires [time] server {listen 90;server_name localhost;location /czj {root /home;expir ...

最新文章

  1. 自定义 coding.net 静态网站域名
  2. EF调用存储过程实现分页
  3. [转]浅谈CMD和win powershell的区别
  4. 【学习记录】网络层——IP数据报(格式与分片)
  5. 作者:陈卫, 男, 微软亚洲研究院高级研究员, 清华大学客座教授。
  6. 园子装修 | 打造自己的直男审美博客园(施工中,持续更新)
  7. CSP202006-2 稀疏向量(100分)【map】
  8. JS getElementsByClassName
  9. 基于Elasticsearch 7.0 的从零开始构建知识图谱-win10测试
  10. 当前系统缺少NTFS格式转换器(convert.exe)
  11. Android recovery分区表
  12. 【杂记】01:王者荣耀,再见?
  13. Protel99SE添加泪滴焊盘
  14. 1小时、1天、1个月、一年的时间戳
  15. 图算法在风控场景的应用
  16. Open3DCGAL DSM(数字表面模型)
  17. 微信自定义分享在pc正常手机端不正常问题
  18. python地铁路线可视化
  19. SparkCore案例练习:统计广告ID
  20. Android工程中imei和oaid的获取

热门文章

  1. 自抗扰控制中的扩张状态观测器收敛性分析3
  2. python截图(长图和短图)方法封装
  3. 三角函数π/2转化_数学集训营 | NO.16 任意角的三角函数之必考点
  4. 2021广州城市信息模型(CIM)白皮书发布
  5. PHP队列研究一(数据库任务队列)
  6. 布谷鸟沙盒分析静态文件_布谷鸟cuckoo
  7. 【狂神说Java】SpringBoot最新教程IDEA版通俗易懂
  8. 从零开始搭建ROS智能小车@sp头子
  9. mysql blob类型图片输出到前端
  10. FPGA源同步时钟输出