=========================================================================================

系统环境:

SUSE Linux Enterprise Server 10 SP1 (x86_64)


详细资料可以参考如下:

http://code.google.com/p/tcpcopy/downloads/list

https://github.com/wangbin579

http://blog.csdn.net/wangbin579


通过TCPCopy复制在线真实流量到预发布的新版测试环境中,可以起到比较真实的测试效果,随时发现预发布版本中

的问题,同时对线上环境不造成影响。


本次测试采用的是新架构模式,最新版本为0.9.0。


=========================================================================================

一、编译安装TCPCopy

# tar xvzf libpcap-1.4.0.tar.gz

# cd libpcap-1.4.0

# ./configure --prefix=/usr/local

# make && make install


# tar xvzf tcpcopy-0.9.0.tar.gz

# cd tcpcopy-0.9.0

# ./configure --prefix=/usr/local/tcpcopy \

--enable-advanced \

--enable-combined \

--enable-pcap

# make && make install


注意:

在SUSE 10 系统上编译时,会出现rpl_malloc未定义的报错,导致编译失败。解决方法:

将文件./src/core/config.h中的 "#define malloc rpl_malloc" 这行,注释掉即可。


=========================================================================================

二、测试环境说明

本次测试环境需要3台服务器,1台线上服务器,2台测试服务器:

A  -->  在线服务器:10.171.85.11  (在线的前端Nginx,需要部署TCPCopy)

B  -->  测试服务器:10.171.47.45  (后端WEB服务,不需要部署TCPCopy,但需要设置路由)

C  -->  响应服务器:10.171.47.44  (用于截取B服务器的响应,需要部署TCPCopy


=========================================================================================

三、详细测试步骤

本次测试所涉及到的命令不做详细说明,官方都有详细的文档可以参考


(1)、B服务器

/sbin/route add -host 10.171.85.11 gw 10.171.47.44


(2)、C服务器

/usr/local/tcpcopy/bin/intercept -i eth1 -F 'tcp and src host 10.171.47.45 and src port 80' -d

/usr/sbin/iptables -I OUTPUT -p tcp --sport 80 -j QUEUE


(3)、A服务器

复制3倍的在线流量

/usr/local/tcpcopy/bin/tcpcopy -x 80-10.171.47.45:80 -s 10.171.47.44 -i eth1 -d

/usr/local/tcpcopy/bin/tcpcopy -x 80-10.171.47.45:80 -s 10.171.47.44 -i eth1 -d -f 1

/usr/local/tcpcopy/bin/tcpcopy -x 80-10.171.47.45:80 -s 10.171.47.44 -i eth1 -d -f 2


或者


复制多份流量

/usr/local/tcpcopy/bin/tcpcopy -x 80-10.171.47.45:80 -s 10.171.47.44 -i eth1 -d -n 3


以上是两种方案用于放大流量进行测试,对压力测试能够起到很好的效果,个人比较推荐第一种方案。