优点:
-
原生模块支持,在nginx 1.13.4版本后内置该模块
-
支持配置多份镜像放大流量
-
配置比较简单,nginx-server将流量复制到mirror后无交集,达到对真实流量无影响目的
缺点:
-
修改配置后需要执行“nginx -s reload”命令使变更生效,线上环境不建议这么做
-
实际业务中经由nginx转发的模块较多,无法筛选指定请求
-
只支持录制http流量
-
mirror为子请求,当mirror未结束时,主请求的内存无法释放,可导致nginx性能下降甚至阻塞
TcpCopy
项目地址:https://github.com/session-replay-tools/tcpcopy
优点:
-
使用线上的真实数据
-
适合高并发场景
-
对目标服务器基本无干扰
-
支持复制基于TCP任意层协议的流量
缺点:
-
由于只做数据包复制未做流量异常鉴别,可能导致异常数据进入目标服务器
-
无法对应用层的数据进行筛选和修改
-
可能会丢失数据包导致请求丢失
GoReplay
项目地址:https://github.com/buger/goreplay
优点:
-
通过字节码增强的方式可以直接录制Java方法、子调用
-
对业务代码0侵入
-
模块功能丰富
缺点:
-
对服务运行环境有一定侵入
-
在挂载瞬间会占用较多的机器资源,当业务量大时可能会导致服务夯住
-
当前功能不完善,需要代码开发能力
总结
通过技术方案可以方便我们利用线上真实流量验证压测、自动化、回归等场景,根据自己实际的需求选择合适的工具,但一切以不影响线上服务的稳定可用为前提。也期待后续会有更多的更完善的流量回放方案。
下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!