[XCopy]tcpcopy0.6版本的使用方法

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:
无意间看见网易使用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


相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
人工智能 搜索推荐 云栖大会
解密!通义智文-你的AI阅读助手!
通义智文是基于通义大模型的AI阅读助手,网页阅读、论文阅读、图书阅读和自由阅读,用AI帮你读得多、读得快、读得懂。 通过文档场景化阅读、结构化导读、给我灵感、多文档处理等亮点功能和文档智能大小模型协同的核心技术。让AI帮你更准确,更深入,更专业的读懂文档,沉淀专属知识资产。 产品已于2023年10月31日在云栖大会正式对外发布,现免费公测全面开放。
2759 1
解密!通义智文-你的AI阅读助手!
基于AutoJs4的快手专业版源码大分享
基于AutoJs4的快手专业版源码大分享
470 0
|
10月前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的变步长LMS自适应滤波器verilog实现,包括testbench
### 自适应滤波器仿真与实现简介 本项目基于Vivado2022a实现了变步长LMS自适应滤波器的FPGA设计。通过动态调整步长因子,该滤波器在收敛速度和稳态误差之间取得良好平衡,适用于信道均衡、噪声消除等信号处理应用。Verilog代码展示了关键模块如延迟单元和LMS更新逻辑。仿真结果验证了算法的有效性,具体操作可参考配套视频。
371 74
|
10月前
|
Ubuntu
Ubuntu20.04 编译安装FFmpeg,出错分析以及解决方案
通过上述步骤,可以在 Ubuntu 20.04 上成功编译和安装 FFmpeg。如果遇到问题,可以通过检查依赖包的安装情况以及 `config.log` 文件来解决。掌握这些技巧和解决方案,可以有效地解决编译过程中遇到的各种问题,提高安装成功率。
1017 13
|
9月前
|
传感器 存储 程序员
一文彻底搞明白51单片机的发展历程
51单片机自1980年Intel推出MCS-51系列以来,历经40余年发展,从最初的工业控制逐步扩展到家电、通信、智能家居等多领域。其哈佛架构和丰富的指令集奠定了技术基础,并通过持续创新保持竞争力。面对ARM等新架构的挑战,51单片机通过工艺革新和功能扩展,如集成ADC、USB、蓝牙等,仍占据电动工具、智能传感器等成本敏感领域的70%以上市场份额。如今,它不仅是嵌入式技术的活化石,更是中国电子产业崛起的见证者,全球90%的51单片机产自长三角地区。坚持学习,每天一个小知识点,是不是有了新收获,加油哈!
974 0
|
机器学习/深度学习 算法 Python
群智能算法:深入解读人工水母算法:原理、实现与应用
近年来,受自然界生物行为启发的优化算法备受关注。人工水母算法(AJSA)模拟水母在海洋中寻找食物的行为,是一种新颖的优化技术。本文详细解读其原理及实现步骤,并提供代码示例,帮助读者理解这一算法。在多模态、非线性优化问题中,AJSA表现出色,具有广泛应用前景。
|
运维 前端开发 Oracle
再有人问你WebSocket为什么牛逼,就把这篇文章发给他!
再有人问你WebSocket为什么牛逼,就把这篇文章发给他!2008年6月诞生了一个影响计算机世界的通信协议,原先需要二十台计算机资源才能支撑的业务场景,现在只需要一台,这得帮"抠门"老板们省下多少钱,它就是大名鼎鼎的WebSocket协议。很快在下一年也就是2009年的12月,Google浏览器就宣布成为第一个支持WebSocket标准的浏览器。WebSocket的推动者和设计者就是下面的Michael Carter,他设计的WebSocket协议技术现在每天在全地球有超过的设备在使用。
545 1
再有人问你WebSocket为什么牛逼,就把这篇文章发给他!
|
消息中间件 存储 Java
Kafka 详解:全面解析分布式流处理平台
Kafka 详解:全面解析分布式流处理平台
880 0
|
机器学习/深度学习 人工智能 搜索推荐
语音识别技术的现状与未来展望
【6月更文挑战第15天】**语音识别技术现状与未来:** 随AI发展,语音识别精度与速度大幅提升,应用广泛,从手机助手到智能家居。深度学习驱动技术进步,跨语言及多模态交互成为新趋势。未来,精度、鲁棒性将增强,深度学习将进一步融合,个性化和情感化交互将提升用户体验。跨领域融合与生态共建将推动技术普及,为各行业带来更多智能解决方案。但同时也需关注技术伦理和社会影响。
1116 2
|
缓存 网络协议 测试技术
推荐一款简单易用线上引流测试工具:GoReplay
推荐一款简单易用线上引流测试工具:GoReplay
645 0
推荐一款简单易用线上引流测试工具:GoReplay