无意间看见网易使用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
分享到:
相关推荐
UDPCopy原理及介绍部分将讨论UDP数据包的复制原理及其使用方法。 MysqlCopy原理及介绍部分则会介绍如何复制MySQL数据库的操作,包括正常模式和跳过授权表模式(skip-grant-tables)的使用。 最后,文章还提供了...
ODAC(Oracle Data Access Components)是Oracle公司提供的一套用于.NET Framework的数据访问组件,它使得...通过理解其组件、安装过程和使用方法,开发人员能够更加高效地构建和维护Oracle数据库相关的应用程序。
ODAC1120320Xcopy是一个轻量级的安装包,其命名中的“Xcopy”表示它可以使用“xcopy”命令进行部署,这是一种快速且无须用户交互的安装方式。这种部署方法使得开发者能够方便地在不同计算机之间复制和部署ODAC组件,...
2. **安装路径**:使用Xcopy部署方法时,需要选择一个适当的目录来解压所有文件。确保该目录没有特殊字符或空格,以防止可能出现的问题。 3. **环境变量**:安装后,可能需要添加相关路径到系统的PATH环境变量中,...
ODAC112030Xcopy_x64和ODAC112040Xcopy_64bit是两个不同版本的ODAC组件,适用于64位操作系统。这些版本号(如112030和112040)通常代表Oracle数据库的主要和次要版本号,例如11.2.0.30和11.2.0.40,其中数字11表示主...
XCOPY v1.1汉化版是在原版XCOPY基础上进行了语言本地化,使得中文用户能够更加方便地理解和使用。 **2. XCOPY的命令格式** 基本的XCOPY命令格式为: ``` XCOPY [source] [destination] [/options] ``` 其中,`...
在ODAC122010Xcopy_x64中,"Xcopy"代表“交叉复制”安装方式,这种安装方法非常简便,因为它允许用户通过命令行使用`xcopy`命令进行部署,无需交互式安装界面,只需将所有文件复制到目标位置即可完成安装。...
"Xcopy"代表该安装包采用“复制并运行”(eXtended Copy)的方式,意味着用户可以简单地通过命令行将其复制到目标目录并执行,无需复杂的安装过程。 压缩包中的文件有以下几个关键部分: 1. **configure.bat、...
"Xcopy"表示这是一个可以使用XCOPY命令进行部署的版本,意味着你可以通过简单的复制粘贴操作将安装包内容部署到目标机器上,而无需复杂的安装过程。 在压缩包中,我们看到了以下几个关键文件: 1. configure.bat、...
如果需要使用Oracle数据库,可以通过项目引用,将`odp.net4\odp.net\bin\4\Oracle.DataAccess.dll`路径下的Oracle.DataAccess.dll添加为引用,这样就可以在C#或VB.NET代码中使用ODAC提供的类和方法来执行SQL查询、...
windows xcopy 远程拷贝
自动生成xcopy排除文件 xcopy /exclude:uncopy 批处理xcopy
2. **Xcopy部署**:该版本的ODAC支持“Xcopy”部署,意味着你可以通过简单的复制和粘贴操作在目标机器上安装,而不需要使用安装程序,这对于快速部署和测试环境非常方便。 3. **配置脚本**:配置文件如configure....
标题中的“Xcopy超级拷贝工具 可以达到硬盘传输极限”指的是Windows操作系统中的一个强大命令行工具——Xcopy(eXtended Copy)。Xcopy是DOS命令的一部分,它扩展了基本的复制命令(copy),提供了更多选项,使得...
本文将详细解释如何使用`xcopy`与`EXCLUDE`参数。 首先,`xcopy`的基本语法是: ```cmd xcopy 源 目标 [选项] ``` 其中,`源`是你要复制的文件或目录,`目标`是你希望复制到的位置。选项可以根据需求选择,例如 `/e...
oracle 每个版本都有问题,能用的就是打了补丁后的版本,这个11到目前为止最后一个版本。 64-bit ODAC 11.2 Release 6 (11.2.0.4.0) Xcopy for Windows x64 [Released January 14, 2014] Download ODAC112040...
ODAC 11.2.0.2.1 Xcopy_x64 版本是面向64位操作系统的,"Xcopy"代表它可以使用Windows的“复制并粘贴”(xcopy deployment)方式来安装,这是一种简单快捷的部署方法,无需安装程序,只需将所有必要的文件复制到目标...