tcpcopy是一种应用请求复制(基于tcp的packets)工具,其应用领域较广,我们曾经应用于网易的广告投放系统,urs系统,nginx hmux协议开发等系统,避免了上线带来的很多问题。
总体说来,tcpcopy主要有如下功能:
1)分布式压力测试工具,利用在线数据,可以测试系统能够承受的压力大小(远比ab压力测试工具真实地多),也可以提前发现一些bug
2)对于后端的短连接,请求丢失率非常低(1/10万),可以应用于热备份
3)普通上线测试,可以发现新系统是否稳定,提前发现上线过程中会出现的诸多问题,让开发者有信心上线
4)对比试验,同样请求,针对不同或不同版本程序,可以做性能对比等试验
5)利用多种手段,构造无限在线压力,满足中小网站压力测试要求
6)实战演习(架构师必备)
tcpcopy可以用于实时和离线回放领域,并且tcpcopy支持mysql协议的复制,开源一年以来,功能上越来越完善。
如果你对上线没有信心,如果你的单元测试不够充分,如果你对新系统不够有把握,如果你对未来的请求压力无法预测,tcpcopy可以帮助你解决上述难题。
=========================
项目地址:
简介
tcpcopy是一种请求复制(所有基于tcp的packets)工具,其应用领域较广,我们曾经应用于网易的广告投放系统,urs系统,nginx hmux协议等系统,避免了上线带来的很多问题。
我们即将应用tcpcopy于membase替换现有mecached系统的任务中。由于membase还不够成熟,不适合直接上线,利用tcpcopy程序,可以把访问memcached的系统流量复制一份到membase系统中去。对于membase来说,这份流量就是访问membase的,跟直接上线membase效果一样,就可以做各种试验,查看membase的各种特性。
tcpcopy六大功能:
1)分布式压力测试工具,利用在线数据,可以测试系统能够承受的压力大小(远比ab压力测试工具真实地多),也可以提前发现一些bug
2)如果后端的连接是短连接并且请求体不大,请求丢失率一般都非常低(1/10万),可以应用于热备份
3)普通上线测试,可以发现新系统是否稳定,提前发现上线过程中会出现的诸多问题,让开发者有信心上线
4)对比试验,同样请求,针对不同或不同版本程序,可以做性能对比等试验
5)利用级联tcpcopy或者利用代理进行多份复制,可以构造无限在线压力,满足中小网站压力测试要求
6)实战演习(架构师必备)
特点:
1)实时
2)效果真实
3)低负载,不影响在线
4)操作简单
5)分布式
6)意义非凡
使用方法:
TCPCOPY分为TCPCOPY client和TCPCOPY server。
其中TCPCOPY client运行在在线服务器上面,用来捕获在线请求数据包;TCPCOPY server(监听端口为36524)运行在测试机器上面,在测试服务器的响应包丢弃之前截获测试服务器的响应包,并通过TCPCOPY client和TCPCOPY server之间的tcp连接传递响应包的tcp和ip头部信息给TCPCOPY client,以完成TCP交互。
使用方法如下:
TCPCOPY server (root用户执行)
1)启动内核模块ip_queue (modprobe ip_queue)
2)设置要截获的端口,并且设置对output截获
iptables -I OUTPUT -p tcp –sport port -j QUEUE
3)./interception
注意(如果已经启动ip_queue和已经设置iptables,只需要运行第3项;测试完以后要记得iptables -F)
TCPCOPY client (root用户执行)
./tcpcopy 本地ip地址1[:本地ip地址2:…] 本地port 远程ip地址远程port
注意(本地ip地址列表其实就是客户端所认为的服务器ip地址,如果前面有lvs,一般就是lvs的虚拟ip地址)
测试举例: