使用goreplay流量回放实践

What

关于goreplay
首先什么是goreplay?
参照官方介绍

GoReplay is the simplest and safest way to test your app using real traffic before you put it into production.

GoReplay提供了重用现有流量进行测试的简单想法。
大致工作流程如下:


goreplay.png

简单来说就是goreplay抓取线上真实的流量,并将捕捉到的流量转发到测试服务器上

When

什么时候可以试用goreplay?
简单写几点场景,具体还是根据实际需求来。

  • Case 1
    上线前在预发布环境,使用线上真实的请求,检查是否准备发布的版本,是否具备发布标准
  • Case 2
    压力测试完成后,用线上真实的请求,加速后回放至测试环境,检查是否有报错等问题
  • Case 3
    abtest
    用线上的流量转发到预发,检查相同流量下一些指标的反馈情况,检查核心数据是否有改善、优化
    等等
    具体case还需要根据自己的需求,灵活改变。

How

上面大致说了goreplay是什么以及什么场景可以用,下面记录一下自己的实践过程。
首先需要线上服务器root权限,这个需要谨慎使用!!!

1.下载安装goreplay

参照文档,这一步很简单

wget [https://github.com/buger/goreplay/releases/download/v1.0-rc2/gor_1.0-RC2_x64.tar.gz](https://github.com/buger/goreplay/releases/download/v1.0-rc2/gor_1.0-RC2_x64.tar.gz)
tar xvf gor_1.0-RC2_x64.tar.gz

2.一些常用的命令

-input-raw 抓取指定端口的流量 gor --input-raw :8080
-output-stdout 打印到控制台
-output-file 将请求写到文件中 gor --input-raw :80 --output-file ./requests.gor
-input-file 从文件中读取请求,与上一条命令呼应 gor --input-file ./requests.gor
-exit-after 5s 持续时间
-http-allow-url url白名单,其他请求将会被丢弃
-http-allow-method 根据请求方式过滤
-http-disallow-url 遇上一个url相反,黑名单,其他的请求会被捕获到

实践一下

  • 捕获2051端口的请求打印到控制台
    隐藏了部分敏感信息
sudo ./gor --input-raw :2051 --output-stdout

Version: 1.0-RC2
1 45aea8cbxxxxxxx61a7600f384b263bb49dd60 1551432827638974877
POST /absoxxxxlar HTTP/1.1
Host: inner-xxxxxxxx.com
Accept: */*
Content-Length: 259
Content-Type: application/x-www-form-urlencoded

{"page":1,"count":10,"group":"exp_xxxxxr08","content_id":"77769a95f43438xxxx7f2e82c742","uid":"69xxxx68","device_code":"86093xxxxx2318","register_timestamp":1xxxxx75,"sex":0,"channel":"bxxxu","flavor":"","fancy":"","district":"\u5b81\u6ce2\u5e02"}
1 1944f453259c95c1cc8b4cf1227104ed791c428c 1551432827642028761
POST /sixxxxxlar HTTP/1.1
Host: inner-xxxxxx.com
Accept: */*
Content-Length: 259
Content-Type: application/x-www-form-urlencoded

{"page":1,"count":10,"group":"expxxxx07","content_id":"9142a79e98b7xxxxxa67eaecd9de1","uid":"98xxxxx459","device_code":"868xxxx34136943","register_timestamp":15xxxx5663,"sex":2,"channel":"gdt79","flavor":"","fancy":"","district":"\u8861\u9633\u5e02"}
1 28e10318f1d512f4e57b583aec4457e25daaadb6 1551432827657153296
POST /abxxxxxilar HTTP/1.1
Host: inner-xxxxxxxx.com
Accept: */*
Content-Length: 260
Content-Type: application/x-www-form-urlencoded
  • 将请求保存到本地文件中
sudo ./gor --input-raw :2051 --http-allow-url /recommend_you_like --output-file ./recommend_you_like.gor
只筛选recommend_you_like接口的请求,保存在本地文件中

这边实际上是两个实践
第一个:保存流量到文件
第二个:抓取置顶url的流量
截图可以看到生成了一个文件


reuqest.gor.png
  • 转发文件中流量至测试环境
sudo ./gor --input-file ./recommend_you_like_0.gor --output-http="http://172.1.1.1:2051"

至测试环境的服务器上,查看日志可以到流量已经转发过来

性能测试

image.png
sudo ./gor --input-file “./recommend_you_like_0.gor|200%” --output-http="http://172.1.1.1:2051"

将请求以2倍的速度发出去
同时也支持限速
10% 20%等
关于限速还有另一种方法——指定每秒的请求数


limit.png
sudo ./gor --input-file “./recommend_you_like_0.gor” --output-http="http://172.1.1.1:2051|50"

更多参考官方文档:https://github.com/buger/goreplay/wiki/Getting-Started

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,012评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,589评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,819评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,652评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,954评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,381评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,687评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,404评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,082评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,355评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,880评论 1 255
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,249评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,864评论 3 232
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,007评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,760评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,394评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,281评论 2 259

推荐阅读更多精彩内容