TCPCopy的使用
Contents
今天由于某些原因,DSP系统的测试环境不能用了,所以想复制一些正式环境的流量到测试服务器上。查找资料,发现了个 tcpcopy 项目,发现不错。
Github上虽然也有安装和使用手册,但对于第一次环境的人来说,还是有点模糊。经过自己动手设置,终于理解了它的使用方式:
安装就不多介绍了,这里只是描述使用
假设你的测试环境的应用监听的是 9001 ,而且是在 10.0.0.40
启动 intercept
假设 intercept 的IP为 10.0.0.40 ( intercept 要与你的测试的应用程序所在的服务器在同一个),而且下面的 9001 也就是测试的应用程序的端口。
./intercept -i eth0 -F 'tcp and src port 9001' -d
注意,这里的 9001 就是要处理的当前服务器地址的源端口
启动 tcpcopy
假设 tcpcopy 的地址为 10.0.0.40
./tcpcopy -x 80-10.0.0.40:9001 -s 10.0.0.40 -c 10.0.0.40
-x :表示将本机的 80 端口的流量,copy一份到 10.0.0.40 的 9001 端口。最好加上 -H
来指定本机绑定的IP地址.
-s :这个就是 intercept 的地址。完整的格式为 “ip:port,ip2:port”
-c :tcpcopy 修改tcp的源IP地址,以免响应给最初的 client。
提醒: 习惯用 -H 你本机的的IP
参数比较好, 不然可能会出现没回放的情况.
完整的示例格式
sudo ./tcpcopy -H 10.26.83.156 -x 888-10.26.83.156:8000 -s 10.26.83.156 -c 10.26.83.x -r 1 -l tcpcopy.log
注意
下面是要注意的事项
丢包
在测试过程中,发现它会丢包,测试的情况如下:
9477 - 10000
18959 - 20000
28351 - 30000
上面是 成功数/总请求数
负载
10GB内存,8核的 ab 10W个请求:
tcpcopy: 0.4% 的内存,53% 的CPU intercept: 0.4% 的内存, 23% 的CPU