01 为什么需要流量复制工具
在某些场景下(例如重构,发布某个新功能),我们需要将生产环境的请求回放到测试环境,然后将生产的响应和测试的响应结果做比对,以校验功能是否正常,有没有什么好的方法和工具?
对于一些有并发要求的业务,特别是对接外部流量时,产品上线前一定要做的就是压力测试,但是常规的压力测试并不能覆盖所有情况。
以loadruner、Jmeter、hyload、ab,、web bench、http_load为例,这些通过模拟请求的压测工具,只能发送特定的参数,对于一些参数异常导致的程序处理异常是无法考虑到的,所以就需要一款能复制真实流量,并且不影响线上业务的工具。
流量复制工具有很多,例如goreplay、tcpreplay、tcpcopy等,这些工具贴合真实场景,能模拟真实流量,并支持流量的放大或缩小,更容易测试出程序的瓶颈和潜在问题。
总结一下,流量复制工具的优势就是可以将线上流量拷贝到测试机器,实时的模拟线上环境,真实的模拟线上流量的变化规律,达到在程序不上线的情况下实时承担线上流量的效果。
02 流量复制工具比对
TCPCopy
TCPCopy 是一种请求复制(复制基于 TCP 的 packets)工具 ,通过复制在线数据包,修改 TCP/IP 头部信息,发送给测试服务器,达到欺骗测试服务器的TCP 程序的目的,从而为欺骗上层应用打下坚实基础。
TCPCopy由网易技术部的王斌在王波的工作基础上中开发,并于9月开源。TCPCopy一般会与tcpdump共同使用。
goreplay