tcpcopy压测配置笔记

本文涉及的产品
性能测试 PTS,5000VUM额度
简介:

 

软件安装

下面演示的tcpcopyintercepter都是1.0.0版本,直接从github下载即可。

https://github.com/session-replay-tools/tcpcopy

 

tcpcopy运行需要intercept的支持,tcpcopy负责抓包和发包工作,而intercept负责截获应答包


wKioL1hFjE7DSsj5AAB78X6DTnY315.png


node1  192.168.2.11      online server    安装tcpcopylibpcap-devel

node2  192.168.2.12      target server 添加路由

node3  192.168.2.130    assistant server 安装intercepterlibpcap-devel

另外找一个当前网段没有主机在用的IP,例如192.168.2.110

 

实验中的node1node2上都跑了nginx,监听在80端口。node1为线上服务器,node2为测试服务器。

 

node2上:

route add -host 192.168.2.110 gw 192.168.2.130

 

说明:

# 192.168.2.110 是经复制后测试数据包上填入的源地址。

# 192.168.2.130 assistant server,上面将会运行intercept服务。

这条命令作用是 target server对于复制而来的请求(根据源地址判断)的响应,不会返回给请求客户端,而是发往assistant server, assistant server最终丢弃这个数据包(因为assisant server上并没有相关的路由)。

 

 

node3上:

echo 0 > /proc/sys/net/ipv4/ip_forward    # 关闭内核转发功能

 

tar xf intercept-1.0.0.tar.gz

cd intercept-1.0.0

./configure

make -j 4 && make install

cd /usr/local/intercept/sbin

 

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

 

其中80target server的端口号。intercept捕获基于TCP应用的响应

关闭内核转发,这样的话,target server的那个route过来的数据包就过来了会匹配不到路由,直接被丢弃了。

 

ps aux|grep intercept     可以看到进程启动了

 

 

node1上:

tar xf tcpcopy-1.0.0.tar.gz && cd tcpcopy-1.0.0

./configure

tcpcopy的安装,有如下2种方式:

./configure (默认raw socket方式抓包)

或者./configure --pcap-capture  pcap方式抓包,在某些场景下,丢包率会高于raw socket方式抓包,这时候需要类似pf_ring的支持)

 

make -j 4 && make install

cd /usr/local/tcpcopy/sbin

 

./tcpcopy -x 80-192.168.2.12:80 -s 192.168.2.130  -c 192.168.2.110 -n 10

格式:tcpcopy -x localServerPort-targetServerIP:targetServerPort -s <intercept server,> [-c <ip range,>]

这样把本机80端口的10倍的数据流量就发到了192.168.2.1280端口去,并且把发过去的数据包伪装成源地址是192.168.2.110这个虚假的IP。并且连接192.168.2.130,告诉intercept将响应数据包发给online server本机

如果有多台online server,只要在每台online server上都执行上面的这个tcpcopy命令即可。

 

其中80target server的端口号。

-x 80-192.168.2.12:80 是将从80端口的请求发往 target server

-s 192.168.2.130 为指定assistant server

-c 192.168.2.110 是指将所有复制请求的数据包的源地址全改为 192.168.2.110 

-n参数指定复流量的倍数。

 

验证效果:

另找一台主机node4,执行ab -c 100 -n 100000 http://192.168.2.11/index.php

 

然后观察node1node2上面的连接数ss -tan,及系统负载uptime、网络流量dstat

ss -tan|awk 'NR>1 {++s[$1]} END {for (k in s) print k,s[k]}'

 

另外,可以在node1或者node2上抓包:

tcpdump -i eth0 -nn port 80 and host 192.168.2.110

 

node3上抓包:

tcpdump -i eth0 -nn host 192.168.2.130

这些方式都可以很直观的看到数据包的流向。

 

 

停止流量复制

assistant server kill intercept进程,在online server kill tcpcopy进程,在target server上删除相应的route

 

其他注意点:参照作者的CSDN博客即可。










本文转自 lirulei90 51CTO博客,原文链接:http://blog.51cto.com/lee90/1879800,如需转载请自行联系原作者
相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
2月前
|
消息中间件 监控 关系型数据库
PTS压测问题之多账号并发登录配置如何解决
PTS(Performance Testing Service)是一项面向网站、应用等提供的压力测试服务,用于模拟不同场景下的用户访问,评估系统的性能表现;在进行PTS压测时,可能会出现一些异常或报错,本合集将PTS压测中频繁出现的问题及其解决办法进行汇编,旨在帮助用户更有效地进行性能测试和问题定位。
262 2
|
2月前
|
SQL 监控 测试技术
PTS压测问题之token值不一样配置如何解决
PTS(Performance Testing Service)是一项面向网站、应用等提供的压力测试服务,用于模拟不同场景下的用户访问,评估系统的性能表现;在进行PTS压测时,可能会出现一些异常或报错,本合集将PTS压测中频繁出现的问题及其解决办法进行汇编,旨在帮助用户更有效地进行性能测试和问题定位。
289 1
|
2月前
|
NoSQL 测试技术 Redis
Redis【性能 01】Redis 5.x 6.x 7.x 共5个不同版本延迟及性能测试对比分析(单机版默认配置)
Redis【性能 01】Redis 5.x 6.x 7.x 共5个不同版本延迟及性能测试对比分析(单机版默认配置)
308 0
|
11月前
|
Prometheus Cloud Native 测试技术
性能测试--grafana 里配置 prometheus
性能测试--grafana 里配置 prometheus
|
固态存储 测试技术 Linux
文件IO操作开发笔记(二):使用Cpp的ofstream对磁盘文件存储进行性能测试以及测试工具
在做到个别项目对日志要求较高,要求并行写入的数据较多,尽管写入数据的线程放在子线程,仍然会造成界面程序的假死(实际上Qt还是在跑,只是磁盘消耗超过瓶颈,造成假死(注意:控制台还能看到打印输出,linux则能看到打印输出)。 本篇升级了测试工具,并且测试了ofstream在USB3.0和M.2SSD上的写入性能。
文件IO操作开发笔记(二):使用Cpp的ofstream对磁盘文件存储进行性能测试以及测试工具
|
存储 监控 Linux
Linux下安装配置Grafana压测监控服务-配置JMeter后端监听器
Linux下安装配置Grafana压测监控服务-配置JMeter后端监听器
|
缓存 网络协议 安全
性能测试 Apache参数配置与性能调优
性能测试 Apache参数配置与性能调优
367 0
|
监控 数据管理 测试技术
性能测试技术笔记(三):如何设计一个压测平台
对于压测平台,或者说各种测试平台,其实很多同学有个误区就是:平台各种高大上牛逼,但往往忽略了开发和维护以及学习使用平台本身的成本。
性能测试技术笔记(三):如何设计一个压测平台
|
消息中间件 缓存 运维
性能测试技术笔记(一):如何快速上手压测工作
如果是专职做性能测试,或者刚介入一个全新的系统进行压测,想要短时间内了解业务细节是几乎不可能的。
性能测试技术笔记(一):如何快速上手压测工作
|
Java 测试技术 应用服务中间件
压测软件,JMeter5.4.1版本下载及环境变量配置
压测软件,JMeter5.4.1版本下载及环境变量配置
941 0
压测软件,JMeter5.4.1版本下载及环境变量配置