关于gor和tcpcopy的介绍,可以参考流量复制导流工具研究
一、协议层面
- tcpcopy是重放TCP流的工具,在数据链路层抓取数据包。
- Gor是重放HTTP请求的工具,基于HTTP层。
二、部署方面
- tcpcopy的部署比较复杂,一套tcpcopy环境至少需要3台机器(生产服务器配置tcpcopy,测试服务器,响应拦截服务器intercept)。
通过设置路由策略来修改TCP/IP头部信息来进行请求复制和响应拦截。 - Gor的部署简单,两台即可。一台生产服务器运行Gor,将流量实时录制转发到另一台测试服务器上。
不需要配置路由信息和响应拦截,直接使用Gor命令的参数即可。
三、应用方面
相同点
- 复制线上真实流量,实时模拟线上流量
- 放大真实流量,进行压力测试
- 线上真实流量拷贝到线下回放,用于排查线上问题
不同点
- Gor支持HTTP层面的请求过滤和流量录制(这点很实用,可以挑选感兴趣或者实际需要的流量进行回放)
- 基于Gor的部署特性,Gor录制的流量,可以在任何环境使用。
补充说明:
引流测试都会造成二次回源。
由于tcpcopy是在数据链路层抓取数据包的,无法过滤。因此,使用tcpcopy进行引流测试会造成该服务器上的所有请求都二次回源。
Gor是基于http层,可以设置过滤规则,因此回源的流量比tcpcopy小非常多。
关于Gor在实际工作中用途的思考
1.引流测试;
2.抓取特定客户的请求流量进行分析。通过分析生产环境的流量特性(url、请求头等),来完善内部测试多样性。
3.测试时如何比较CPU、内存、IO等服务器资源?Gor过滤特定流量,同时回放到两台服务器(一台开启要测试的功能,另一台没有开启),监控服务器资源。