基于生产环境的仿真流量测试
虽然业界的Web应用测试工具众多,但多数是基于压力的离线测试,很多时候很难发现所有问题,往往测试上线后依然存在各种问题。基于实际生产环境的仿真流量测试,无疑能够覆盖更多的问题,达到更好的测试效果。
以下介绍三种实现仿真流量测试环境的实现工具。
goreplay
源码下载
文档
特点
- Go语言编写
- 功能强大,简单易用
- 资源消耗少
简单用例
- 将本地8080端口流量复制到 10.0.0.2 的80端口
1
./goreplay --http-original-host --input-raw :8080 --input-raw-realip-header "X-Real-IP" --output-http "http://10.0.0.2:80" --exit-after 259200s
- 将本地8080端口流量复制到 10.0.0.2 的80端口
Tcpcopy
源码下载
文档
特点
- C语言编写
- 使用复杂
- 依赖root权限或CAP_NET_RAW capability(e.g. setcap CAP_NET_RAW=ep tcpcopy)
- 依赖于 assistant server的intercept截获应答
简单用例
1
2
310.0.0.1 生产环境
10.0.0.2 测试环境
10.0.0.3 assistant server- 生产环境
1
2./tcpcopy -x 8080-10.0.0.2:80 -s 10.0.0.3 -d -n2
# 将生产环境本地8080端口流量放大2倍复制到10.0.0.2的80端口,并指定10.0.0.3为assistant server - 测试服务器(10.0.0.2)上添加路由
1
2
3route add -net 10.0.0.0 netmask 255.255.255.0 gw 10.0.0.3
或:
route add -host 10.0.0.1 gw 10.0.0.3 - assistant server
1
2./intercept -i eth0 -F ‘tcp and src port 80’ -d
# assistant server的intercept捕获eth0网卡的80端口的响应包
- 生产环境
ngx_http_mirror_module
mirror模块默认开启,编译时加–without-http_mirror_module参数可禁用此功能。
版本
Nginx 1.13.4 +
作用域
http, server, location
mirror 模块配置分为两部分:源地址和镜像地址配置。
简单用例配置
1 | # original配置 |