无意间看见网易使用TCPCOPY来测试分布式负载性能测试,并且给出ab测试的结果虚高,是TCPCOPY测试结果的5倍。so,简单试用一下,把结果发下来供大家参考。
1.下载tcpcopy,地址为
http://code.google.com/p/tcpcopy/如果在该地址下载则,直接可以编译安装执行,要求操作系统为linux,如果从github中clone过来:地址为: git clone http://github.com/wangbin579/tcpcopy,则需要先运行
git clone http://github.com/wangbin579/tcpcopy
sh autogen.sh
./configure
make
make install (需要root权限)
2.安装tcpcopy需要root权限,直接clone的,可以从./configure处开始就可以了。
复制流量的原理:
① 一个访问到达线上前端机;
② socket包在ip层被拷贝了一份传给tcpcopy进程;
③ tcpcopy修改包的目的及源地址,发给测试前端机;
④ 拷贝的包到达测试前端机;
⑤ 测试前端机的nginx处理访问,并返回结果;
⑥ 返回结果在ip层被截获、丢弃,由intercpetion拷贝返回结果的ip header返回;
⑦ ip header被发送给线上前端机的tcpcopy进程。
3.介绍如何使用
TCPCOPY分为2个部分client以及server,将client放到需要转移流量的服务器上,server放在测试机器上,例如如下的配置:
client 机器上:
sudo tcpcopy -x 8401-10.18.105.110:36524 -l tcpsend.log
server 机器上:
sudo modprobe ip_queue
sudo iptables -I OUTPUT -p tcp --sport 36524 -j QUEUE
sudo intercept -l tcpreceive.log
代表的意思为:
转移141:8401端口的访问流量到110机器的36524端口
而server端需要指定接收那台机器上来的信息,自己开放那个端口 -l 代表日志放在哪里
4.日志的例子
我截取了一部分日志(这部分是未成功的日志)
[notice] Mon Sep 24 17:40:30 2012 usec=780462 intercept version:0.6.0
[notice] Mon Sep 24 17:40:30 2012 usec=784913 create delay-table,size:65536
[notice] Mon Sep 24 17:40:30 2012 usec=794283 create router-table, size:131072
[notice] Mon Sep 24 17:40:30 2012 usec=794347 socket created successfully
[notice] Mon Sep 24 17:40:30 2012 usec=794360 it binds address successfully
[notice] Mon Sep 24 17:40:30 2012 usec=794372 it listens successfully
[notice] Mon Sep 24 17:40:30 2012 usec=794374 msg listen socket:4
[notice] Mon Sep 24 17:40:30 2012 usec=794412 sendto for ip queue is ok
[notice] Mon Sep 24 17:40:30 2012 usec=794415 firewall socket:5
[warn] Mon Sep 24 17:40:30 2012 usec=794425 nl recv error:60
[warn] Mon Sep 24 17:40:30 2012 usec=794427 privilage problems or not the obj of tcpcopy
[error] Mon Sep 24 17:41:39 2012 usec=638820 set signal handler:2
[notice] Mon Sep 24 17:41:39 2012 usec=638892 release_resources begin
[notice] Mon Sep 24 17:41:39 2012 usec=638920 firewall sock is closed
[notice] Mon Sep 24 17:41:39 2012 usec=638940 msg listen sock is closed
[notice] Mon Sep 24 17:41:39 2012 usec=638946 destroy router table
[notice] Mon Sep 24 17:41:39 2012 usec=643316 total visit hash_find_node:0,compared:0
[notice] Mon Sep 24 17:41:39 2012 usec=643346 destroy items 0 in table name:router-table
[notice] Mon Sep 24 17:41:39 2012 usec=643349 destroy delay table,total:0
[notice] Mon Sep 24 17:41:39 2012 usec=644532 destroy items:0,free:0,total:0
[notice] Mon Sep 24 17:41:39 2012 usec=644539 create msg list:0,free:0,destr:0
[notice] Mon Sep 24 17:41:39 2012 usec=646470 total visit hash_find_node:0,compared:0
[notice] Mon Sep 24 17:41:39 2012 usec=646492 destroy items 0 in table name:delay-table
[notice] Mon Sep 24 17:41:39 2012 usec=646495 release_resources end except log file
5.tcpcopy可以加入参数-m 指定最大使用内存 -l 指定log存放位置 -n 指定复制多少倍的流量
6.现遗留问题,发现截取一段时间后,自己tcpcopy自动挂掉,正在研究中……
7.发现问题在不同网段之间的clientserver会出现如下问题:
2012/09/24 18:32:37 +164 [error] Can not connect to remote server(48:36524) (Connection timed out)
此处问题的解决方案:使用代理进行转发一下
8.模拟请求的脚本
#!/bin/sh
i=0
while true
do
if [ $i -ne 100000 ]; then
curl "http://10.18.102.141:8401/login" > /dev/null
sleep 1
$i=$i+1
else
break
fi
done
分享到:
相关推荐
tcpCopy 架构师必备,不涉及到新架构,只有传统架构
XCOPY参数 XCOPY参数 XCOPY参数 XCOPY参数 XCOPY参数
自动生成xcopy排除文件 xcopy /exclude:uncopy 批处理xcopy
oracle 每个版本都有问题,能用的就是打了补丁后的版本,这个11到目前为止最后一个版本。 64-bit ODAC 11.2 Release 6 (11.2.0.4.0) Xcopy for Windows x64 [Released January 14, 2014] Download ODAC112040...
windows xcopy 远程拷贝
dotnet 的odac组件 ODAC122010Xcopy_x64 instantclient_12_2 oledb odp.net
Oracle远程连接环境配置文件 ODAC1120320Xcopy_x64环境及配置文档,亲测有效,项目已使用。
xcopy与EXCLUDE参数的用法 xcopy与EXCLUDE参数的用法 xcopy与EXCLUDE参数的用法
This will copy ALL files from one folder to another, Fast! If Include Sub Directories is checked, all files in sub directories will be incuded (and the subdirectories themselves of course), like XCOPY...
XCOPY v1.1 汉化版 DOS下的复制工具,可复制系统文件和隐藏文件。
Oracle 最新版本19.3的客户端,X86版, 包含以下组件 Oracle Data Provider for .NET Oracle Providers for ASP.NET Oracle Provider for OLE DB Oracle OLAP Provider for OLE DB -- 18c and higher ...
本文实例讲述了python实现linux下使用xcopy的方法。分享给大家供大家参考。具体如下: 这个python函数模仿windows下的xcopy命令编写,可以用在linux下 #!/usr/bin/python # -*- coding: UTF-8 -*- """ xcopy for ...
使用API写的一个xcopy的源代码 可以集成到使用button操作文件的窗体里面
超快拷贝软件超快拷贝软件超快拷贝软件超快拷贝软件超快拷贝软件超快拷贝软件
DOS xcopy应用 计算机xcopy应用
vs2013 与 Oralce 开发环境,数据交互用到ODAC,以及特别注意安装时候的注意事项
ODAC112021Xcopy_x64.zip