goReplay流量回放
基本原理:
goreplay监听一个端口的流量 然后记录下来 在另一个服务上 去回放这个记录下来的流量文件。
1 先安装go的运行环境
2.1 go环境搭建
tar -C /usr/local -zxvf go1.18.linux-amd64.tar.gz
vim /etc/profile
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
执行 编译生效
source /etc/profile
验证
go env
2.2 goRepay搭建
cd /root/gor
mkdir gor
tar xvf gor_1.3.3_x64.tar.gz -C ./gor
2 goReplay流量复制回放步骤
首先是对生产环境进行流量复制操作,使用如下命令:
# 流量复制
./gor --input-raw:8081 --output-stdout
# 或者 流量复制并保存到文件(推荐)
./gor --input-raw:8081 --output-file "requests.gor"
然后根据业务高峰期等待1小时,甚至更长时间,例如12小时,
这个过程中会看到在gor运行目录下生成requests_0.gor,如果1个文件放不下,会继续生成_1、_2等录制文件。
gor文件会记录整个录制过程中所有发的http协议请求,分批存到不同的gor文件中,按【ctrl+c】停止录制。
然后是在性能环境进行流量回放操作,使用如下命令:
#流量回放 默认回放等待5秒
./gor --input-file "requests_0.gor" --output-http "http://192.168.199.131:8082"
这样就能实现在8081生产环境录制的http流量,重新在性能环境8082上回放一遍,默认是每隔5秒发一次请求。
类似于生产的流量到灰度环境上回放
还可以使用如下流量回放命令:
# 保留上次信息
./gor --input-raw:8081 --output-file "requests_0.gor" --output-file-append
#实时回放
./gor --input-raw:8081 --output-http "http://192.168.199.131:8082"
#缩容
./gor --input-raw:8081 --output-http "http://192.168.199.131:8082|50%" --input-file-loop
#实时回放GET
./gor --input-raw:8081 --http-allow-method GET --output-http "http://192.168.199.131:8082"

流量回放成功
本文来自博客园,作者:Joson6350,转载请注明原文链接:https://www.cnblogs.com/josonhuang/p/17114742.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?