Tcpcopy 给用户提供了很多命令参数来修改引流的模式和设置,详细可以查阅手册。在这里把几种常见的引流方式做个归纳小结,以Tcpcopy传统架构使用命令举例。
分布式引流
用法:Tcpcopy可以通过-x参数实现将多台服务器的请求复制到同一台测试服务器上面去,-x参数常用于分布式引流的场合,可以从多节点进行引流复制。
#./tcpcopy -x 2080- xxx.xx.x.xxx:9999
#./tcpcopy -x 2080- xxx.xx.x.xxx:9999 -f 1
#./tcpcopy -x 2080- xxx.xx.x.xxx 9999 -f 2
适用场景:将线上一个集群的压力复制到测试服务器,适用于线上集群单节点压力小的情况,可以通过这种方式尽量覆盖线上所有的请求,这种方式常被用于容量规划之线上压测方式中的一种。
分层引流
对于一个复杂的线上系统,提供多种业务如图片、存储等,各种业务压力是不均衡的,如果在系统的最前端入口进行复制引流到测试环境,那么部分功能模块的压力将会很大,而部分功能模块的压力很小压不到上限,这时候分层引流就可以解决这样的问题,在系统架构每一层进行引流复制压测,尽量覆盖多的节点。以下是网易广告系统分层压测架构图。
离线回放
用法:离线回放模式需要再configure 的时候加上--enable-offline 参数,离线回放还需要安装pcap 库和pcap 开发库(需要用到pcap 库的头文件)另外运行的时候需要指定-i 参数。
./tcpcopy -x
110-xxx.xxx.xxx.148:110 -i ./on
这里oline.pcap(利用类似于tcpdump 的工具来抓请求数据包,存放到pcap 格式的文件中去)文件作为数据源,把请求转发到测试服务器上。此外增加-a参数对请求数据包的访问进行加速
./tcpcopy -x 80-xxx.xxx.x.xx:8080
-a 2 -i on
假设on
适用场景:由于离线方式依赖于抓包工具(如tcpdump),而抓包工具在压力比较大的场合一般丢包非常严重,而且还会严重影响在线IO,因此一般不推荐在高压情况下使用离线回放方式
部分引流
用法:Tcpcopy可以通过-r参数实现在线服务器应用的部分流量复制,参数范围是1~99,其它值都是全流量复制。-r 参数常用于测试服务器配置不如在线服务器的场合。
#./tcpcopy -x 2080-xxx.xx.xx.xxx:9999 -r 20
这里tcpcopy 复制在线服务器2080 端口应用的20%流量给测试服务器,这里的20%是根据session(这里session 是由客户端IP,客户端端口决定)来统计的。
适用场景:部分引流主要适用于线上请求压力很多,而测试环境的处理能力较弱,这时候就只需复制部分线上的请求到测试环境,就可以压到测试环境的极限.
放大引流
用法:Tcpcopy可以通过-n参数对在线服务器应用的流量进行复制放到到测试服务器,如果你要进行多重复制,-n参数
#./tcpcopy -x 2080-xxx.xx.x.xxx:9999 -n 3
表示复制3 倍的在线服务器的80 端口应用请求流量到192.168.0.2 的8080 端口
适用场景:放大引流主要用于线上压力较小时,想要通过无限构造压力通过成倍引流达到对测试服务器进行压力测试的目的
评论