wika 威卡 wika压力表 威卡压力表 wika双金属温度计 威卡双金属温度计 wika压力表 wika压力变送器 wika温度计 威卡压力变送器 威卡温度计 wika 威卡 wika压力表 威卡压力表 wika双金属温度计 威卡双金属温度计 wika压力表 wika压力变送器 wika温度计 威卡压力变送器 威卡温度计 wika 威卡 wika压力表 威卡压力表 wika双金属温度计 威卡双金属温度计 wika压力表 wika压力变送器 wika温度计 威卡压力变送器 威卡温度计 wika 威卡 wika压力表 威卡压力表 wika双金属温度计 威卡双金属温度计 wika压力表 wika压力变送器 wika温度计 威卡压力变送器 威卡温度计 吕祖灵签36签| 新房装修风水| 射手座口是心非吗| 2013结婚黄历| 免费电脑算命| 十二生肖属相顺序| 姓刘的怎么起名字| 周易算命馆| 办公室的风水摆放| 五行属土的人| 百家讲坛全集之易经| 招财风水| 火星双鱼座男| 星座理财| 彭姓取名字大全男孩| 详批八字算命| 关于生辰八字| 易经入门下载| 房屋风水禁忌| 房子装修风水| 属狗本命佛吊坠| 牛与什么属相相配| 占卜预测| 怎么看风水| 土星天蝎座| 黄历吉日查询购车| 网上注册公司取名| 大运流年算命| 周易尚氏学| 玄关风水| 2015年属羊的几月出生最好| 孔姓宝宝起名| 风水帖吧| 邵伟华风水讲座视频| 属鼠哪个月出生最好| 2013宝宝起名| 易经的智慧易经的奥秘| 北京风水大师| 属鸡的婚姻与命运| 新浪星座日期| 周公解梦梦见好笑| 生辰八字用神| 1979年属羊的人2012年运程| 起名打分1518| 1973年属牛的2015年运势| 十二星座爱情克星| 家居风水招财进宝| 免费观音抽签占卜算命| 四柱预测学入门视频| 房子风水缺东北角| 易经免费算命大全| 蛇年蒋姓男宝宝起名大全| 如何用易经卜卦| 2013年貔貅摆放方位| 宝宝起名软件注册码| 女神异闻录塔罗牌| 宝宝起名多少钱| 常州永宁星座| 印务公司取名| 名字八字测试打分免费| 2014属龙运势| 1979年出生属相| 免费宝宝起名网站| 吕祖灵签80| 什么时候摆放貔貅最好| 餐饮公司起名大全| 金宝宝取名| 双鱼座的月份| 纳音婚配| 星座屋十二星座查询表| 12
Chinaunix首页 | 论坛 | 博客

分类: LINUX

2018-07-23 14:16:57

线下的传统压力测试,难以模拟真实流量,尤其难以模拟正常流量混杂着各色异常流量。所以,线下压得好好的系统,上线后可能某天突然雪崩,说好能支撑 5 倍流量的系统重构,也许流量一翻倍就彻底挂了。

但办法总比问题多。

系统重构或重要变更上线前,可以拷贝线上真实流量,实时模拟线上流量,甚至可以放大真实流量,进行压力测试,以评估系统承载能力。

反过来也可以这样,如果线上跑着跑着发现有性能瓶颈,但线下环境难以复现,还不如把真实流量拷贝到线下重放,毕竟线下环境便于上各种排查手段,重放几遍都行,直到找到问题。

如何实时拷贝线上真实流量呢?TCPCopy

2010年,网易技术部的王斌在王波的工作基础上开发了 TCPCopy - A TCP Stream Replay Tool。2011年9月开源。当前版本号是 1.0.0。很多公司的模拟在线测试都是基于 TCPCopy 做的,如一淘。

TCPCopy 是一种请求复制(复制基于 TCP 的 packets)工具 ,通过复制在线数据包,修改 TCP/IP 头部信息,发送给测试服务器,达到欺骗测试服务器的TCP 程序的目的,从而为欺骗上层应用打下坚实基础。

TCPCopy是如何工作的
基于 Server 的请求回放领域,一般分为离线回放和在线实时复制两种。
其中请求实时复制,一般可以分为两类:
1)基于应用层的请求复制 ,
2)基于底层数据包的请求复制。

如果从应用层面进行复制,比如基于服务器的请求复制,实现起来相对简单,但也存在着若干缺点:
1)请求复制从应用层出发,穿透整个协议栈,这样就容易挤占应用的资源,比如宝贵的连接资源 
2)测试跟实际应用耦合在一起,容易影响在线系统,
3)也因此很难支撑压力大的请求复制,
4)很难控制网络延迟。

而基于底层数据包的请求复制,可以做到无需穿透整个协议栈,路程最短的,可以从数据链路层抓请求包,从数据链路层发包,路程一般的,可以在IP层抓请求包,从IP层发出去,不管怎么走,只要不走TCP,对在线的影响就会小得多。这也就是 TCPCopy 的基本思路。

从传统架构的 rawsocket+iptable+netlink,到新架构的 pacp+route,它经历了三次架构调整,现如今的 TCPCopy 分为三个角色:

Online Server(OS):上面要部署 TCPCopy,从数据链路层(pcap 接口)抓请求数据包,发包是从IP层发出去;

Test Server(TS):最新的架构调整把 intercept 的工作从 TS 中 offload 出来。TS 设置路由信息,把 被测应用 的需要被捕获的响应数据包信息路由到 AS;

Assistant Server(AS):这是一台独立的辅助服务器,原则上一定要用同网段的一台闲置服务器来充当辅助服务器。AS 在数据链路层截获到响应包,从中抽取出有用的信息,再返回给相应的 OS 上的 tcpcopy 进程。

tcpcopy项目地址:https://github.com/session-replay-tools/tcpcopy

Online Server 上的抓包:

tcpcopy 的新架构在 OS 上抓请求数据包默认采用 raw socket input 接口抓包。王斌则推荐采用 pcap 抓包,安装命令如下:

yum install libpcap-devel
git clone git://github.com/session-replay-tools/tcpcopy.git
cd tcpcopy
./configure
make
make install

这样就可以在内核态进行过滤,否则只能在用户态进行包的过滤,而且在 intercept 端或者 tcpcopy 端设置 filter(通过 -F 参数,类似 tcpdump 的 filter),达到起多个实例来共同完成抓包的工作,这样可扩展性就更强,适合于超级高并发的场合。

为了便于理解 pcap 抓包,下面简单描述一下 libpcap 的工作原理。

一个包的捕捉分为三个主要部分:
面向底层包捕获,
面向中间层的数据包过滤,
面向应用层的用户接口。

这与 Linux 操作系统对数据包的处理流程是相同的(网卡->网卡驱动->数据链路层->IP层->传输层->应用程序)。包捕获机制是在数据链路层增加一个旁路处理(并不干扰系统自身的网络协议栈的处理),对发送和接收的数据包通过Linux内核做过滤和缓冲处理,最后直接传递给上层应用程序。如下图2所示:


Online Server 上的发包:
如图1所示,新架构和传统架构一样,OS 默认使用 raw socket output 接口发包,此时发包命令如下:
./tcpcopy -x 80-测试机IP:测试机应用端口 -s 服务器IP -i eth0


其中 -i 参数指定 pcap 从哪个网卡抓取请求包。


此外,新架构还支持通过 pcap_inject(编译时候增加--enable-dlinject)来发包。


Test Server 上的响应包路由:
需要在 Test Server 上添加静态路由,确保被测试应用程序的响应包路由到辅助测试服务器,而不是回包给 Online Server。


Assistant Server 上的捕获响应包:
辅助服务器要确保没有开启路由模式 cat /proc/sys/net/ipv4/ip_forward,为0表示没有开启。
辅助服务器上的 intercept 进程通过 pcap 抓取测试机应用程序的响应包,将头部抽取后发送给 Online Server 上的 tcpcopy 进程,从而完成一次请求的复制。


实验
1.机器别表

192.168.0.11 -- onlie server
192.168.0.12 -- test server
192.168.0.13 -- Assistant server

2.online server操作

安装tcpcopy

yum install libpcap-devel
git clone git://github.com/session-replay-tools/tcpcopy.git
cd tcpcopy
./configure
make
make install

启动TCPCOPY

./sbin/tcpcopy -x 80-192.168.0.12:80 -s 192.168.0.13 -c 192.168.0.11

-x 参数指定本机哪个端口的流量转发到哪台机器的哪个端口,格式为localip:80-targetip:port
-s 参数指定Assistant server -c 指定本机
可以添加-n参数来放大流量,比如说 -n 2 代表放大2倍流量
可以添加-r参数来复制一部分流量。比如说,-r 20 代表复制20%的流量
可以添加-d参数来让tcpcopy后台运行

3.test server操作

route add host 192.168.0.11 gw 192.168.0.13

这一步很重要,之前我就是因为这个路由设置不正确,一直没搭建成功

4.Assistant server操作

安装intercept

yum install libpcap-devel
git clone git://github.com/session-replay-tools/intercept.git
cd intercept
./configure
make
make install

启动intercept

./sbin/intercept -i eth0 -F tcp and src port 80 -d

-i 指定网卡
-F 指定copy的是tcp还是udp
-d 代表后台运行

我这里默认online server还有test server都启动了nginx。当你访问online server上的http服务的时候。你会发现test server上也有访问log存在。可以通过监控test server上的负载,来判断机器的运行情况

转自:路飞   PHP后端学习https://mp.weixin.qq.com/s/ycx5XhehhdDVWCgVnROVOg
阅读(2741) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

注册

2013结婚黄道吉日查询 l六爻占卜 化州县 中国免费算命网 化纤俱乐部
龙姓宝宝取名 五行艾灸馆 天蝎座下周运程 2013年蛇年男宝宝取名 董书琪 2015起名打分 风水世家294 属虎的人运程
14 16 12 17 6
熟食培训 仪表 养生 传感器 宠物 讨债 励志名言 手游游戏 名人名言 散文 离心机 育儿 空调 真空泵 空压机 超声波清洗机 纺织 建筑装饰 机械 五金 铜价 空调 减肥 养生网 整形美容 真人娱乐网 时尚女人 机械门户网 债务维权 侦探 空调维修 家电维修 空调维修制冷 机械网 娱乐新闻 怀孕知识 快递公司 汽车论坛 天下奇闻 风水 婚纱摄影 两性知识 说话技巧 包包 健康门户 金融理财 军事 陶瓷 高校招生 移动通信 时尚女人 股票行情 塑料 体育新闻 电影 健康小常识 服装品牌 科技新闻 生理健康 女性时尚 寺庙 免费算命 星座运势 儿童教育 旅游 历史文化 艺考 今日新闻 化妆品 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 Wika压力表 wika压力表 wika压力表 wika压力表 wika压力表 电伴热厂家 天然气锅炉 罗斯蒙特压力变送器 冷热一体机玻璃钢格栅 恒功率电伴热带 磁翻板液位厂家 铠装热电偶 消防车卷帘门 密度计生产厂家 不锈钢压力表 LED电源厂家 电源外壳 在线密度计 特种电缆 铂铑热电偶 耐震压力表 生物质锅炉 有机玻璃管 亚克力管 生物质热风炉 wika 威卡 wika压力表 威卡压力表 威卡 智能型压力变送器 安徽天康股份有限公司 流量计生产厂家 拉丝模 开关柜 化工流程泵 流量计生产厂家 电磁流量计厂家 流量计厂家 超声波液位计 消防车铝合金卷帘门 消防车铝合金卷帘门 消防车卷帘门 消防车卷帘门 消防车卷帘门 计算机电缆 流量计厂家 超声波液位计 智能型扩散硅压力变送器 开关柜 超声波液位计 智能型压力变送器 安徽天康 流量计生产厂家 压力表厂家 不锈钢压力表 有机玻璃管 计算机电缆 自限温电伴热带