=========================================================================================
系统环境:
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
以上是两种方案用于放大流量进行测试,对压力测试能够起到很好的效果,个人比较推荐第一种方案。