元月's blog 元月's blog
首页
  • 基础
  • 并发编程
  • JVM
  • Spring
  • Redis篇
  • Nginx篇
  • Kafka篇
  • Otter篇
  • Shardingsphere篇
  • 设计模式
  • MySQL
  • Oracle
  • 基础
  • 操作系统
  • 网络
  • 数据结构
  • 技术文档
  • Git常用命令
  • GitHub技巧
  • 博客搭建
  • 开发工具
更多

元月

临渊羡鱼,不如退而结网
首页
  • 基础
  • 并发编程
  • JVM
  • Spring
  • Redis篇
  • Nginx篇
  • Kafka篇
  • Otter篇
  • Shardingsphere篇
  • 设计模式
  • MySQL
  • Oracle
  • 基础
  • 操作系统
  • 网络
  • 数据结构
  • 技术文档
  • Git常用命令
  • GitHub技巧
  • 博客搭建
  • 开发工具
更多
  • 技术文档

  • GitHub技巧

  • Git学习笔记

  • 博客搭建

  • 开发工具

    • gor流量复制工具
      • 一、简介
      • 二、快速开始
        • 2.1、下载
        • 2.2、环境准备
        • 2.3、验证
      • 三、常用命令
        • 3.1、流量捕获
        • 3.2、流量回放
        • 3.3、请求过滤
        • 3.4、请求重写
      • 四、常见问题
        • 4.1、流量复制存在三分之一流量丢失问题
    • BeyondCompare比较工具
  • 工作杂货
  • 开发工具
元月
2024-06-03
目录

gor流量复制工具

# 一、简介

Goreplay (opens new window) 是用 Golang 写的一个 HTTP 实时流量复制工具,可以捕获实时 HTTP 流量并将其重放到测试环境中,以便使用真实数据持续测试您的系统。支持流量的放大、缩小,频率限制,还支持把请求记录到文件,方便回放和分析,也支持和 ElasticSearch 集成,将流量存入 ES 进行实时分析

# 二、快速开始

GitHub地址:https://github.com/buger/goreplay

# 2.1、下载

#http://media.ruanyou.top/blog/file/gor_1.3.3_x64.tar.gz
wget https://github.com/buger/goreplay/releases/download/1.3.3/gor_1.3.3_x64.tar.gz
tar -xvf gor_1.3.3_x64.tar.gz -C ./
1
2
3

# 2.2、环境准备

我们需要记录其中一个服务的HTTP流量,然后重放到另一个服务

#启动一个file-server,端口号8000
gor file-server :8000

#启动一个file-server,端口号8001
gor file-server :8001
1
2
3
4
5

# 2.3、验证

将8000端口流量复制并输出到控制台

gor --input-raw :8000 --output-stdout
1

将8000端口的流量复制并重放

gor --input-raw :8000 --output-raw :8001
1

# 三、常用命令

# 3.1、流量捕获

##输出到控制台
gor --input-raw :8000 --output-stdout
##记录到文件
gor --input-raw :8000 --output-file requests_origin.gor
1
2
3
4

# 3.2、流量回放

##从文件回放流量
gor --input-file requests_origin.gor --output-http="http://ruanyou.top"
##对流量实时转发
gor --input-raw :8000 --output-http="http://ruanyou.top"
#加速回放
gor --input-file "requests_origin.gor|1000%" --output-http "http://ruanyou.top"
#持续加压
gor --input-file "requests_origin.gor|1000%" --output-http "http://ruanyou.top" -input-file-loop
##设置超时时间
gor --input-raw :8000 --output-http="http://ruanyou.top" --output-http-timeout 60s
1
2
3
4
5
6
7
8
9
10

# 3.3、请求过滤

#匹配url
gor --input-raw :8000 --output-http "http://ruanyou.top" \
    --http-allow-url "(/pages/4de765/|/pages/fbfb1a/)"
#排除url
gor --input-raw :8000 --output-http "http://ruanyou.top" \
    --http-disallow-url /api
#匹配header
gor --input-raw :8000 --output-http "http://ruanyou.top" \
    --http-allow-header api-version:^1\.0\d
#匹配cookie
gor --input-raw :8000 --output-http "http://ruanyou.top" \
	--output-http-timeout 60s  \
	--http-allow-url /api  \
	--http-allow-header "cookie: tenant_id=(12345|65432)"   
#匹配请求method
gor --input-raw :8000 --output-http "http://staging.server" \
    --http-allow-method GET \
    --http-allow-method OPTIONS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# 3.4、请求重写

gor --input-raw :8000 --output-http "http://ruanyou.top" \
    --http-rewrite-url /v1/user/([^\\/]+)/ping:/v2/user/$1/ping

gor --input-raw :8000 --output-http "http://ruanyou.top" \
    --http-set-param api_key=1

gor --input-raw :8000 --output-http "http://ruanyou.top" \
    --http-header "User-Agent: Replayed by Gor" \
    --http-header "Enable-Feature-X: true"
1
2
3
4
5
6
7
8
9

# 四、常见问题

# 4.1、流量复制存在三分之一流量丢失问题

流量复制时,发现存在三分之一的流量丢失

参考:

Goreplay官网 (opens new window)

#tool
GitHub + jsDelivr + TinyPNG+ PicGo 打造稳定快速、高效免费图床
BeyondCompare比较工具

← GitHub + jsDelivr + TinyPNG+ PicGo 打造稳定快速、高效免费图床 BeyondCompare比较工具→

最近更新
01
otter二次开发-支持按目标端主键索引Load数据
08-03
02
mvnw简介
06-21
03
BeyondCompare比较工具
03-16
更多文章>
Theme by Vdoing | Copyright © 2022-2024 元月 | 粤ICP备2022071877号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式