• Goreplay-使用真实流量测试


    介绍:

    1.goreplay是一个开源的网络监控工具,它可以记录你的实时流量,并用于跟踪、负载测试、监控和详细分析。

    2.goreplay 是一款从生产环境 copy 流量到测试环境的工具,且不会影响生产环境的业务响应,又能很简单的达到复用 http 请求来做稳定性测试的目的。

    使用场景:

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

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

    安装方式:

    goreplay 是基于 go 语言实现的,要在生产服务器上安装 go 环境;

    非源码编译安装:

    # 请自行安装最新版本
    wget https://github.com/buger/goreplay/releases/download/v0.16.1/gor_0.16.1_x64.tar.gz
    tar xvf gor_0.16.1_x64.tar.gz

    源码编译安装:

    https://www.cnblogs.com/junethirty/p/13304774.html ............源码安装

    goreplay常用命令/参数:

    参数:

    --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相反,黑名单,其他的请求会被捕获到
    --output-http - 重放 HTTP 流量到给定的端点,接受基础 URL

     常用命令:

    • 捕获2051端口的请求打印到控制台
    sudo ./gor --input-raw :2051 --output-stdout
    • 转发8080端口的流量(改成你需要的ip和端口),需要实际存在的地址
    sudo ./gor --input-raw :8080 --output-http "http://192.168.1.100:6660"
    • 转发8080流量并控制台输出
    sudo ./gor --input-raw :8080 --output-http "http://192.168.1.100:6660"  --output-stdout
    • 获取经过本地 8080 端口的请求流量,然后保存在.gor 文件中
    sudo ./goreplay --input-raw :8080 --output-file=request.gor
    • 从文件提取流量 并向某的地址的某个端口输出
    sudo ./gor --input-file=request.gor --output-http="http://localhost:8000"
    • 请求过滤---只收集 /api 下的请求
    sudo ./gor --input-raw :8080 --output-http staging.com --http-allow-url /api

     转发流量提高2倍 (当需要对线上服务进行整体性能压测时,可将线上请求扩大 N 倍,进行引流,将请求扩大 1 倍,也可缩小,调整"|"后面的百分比即可)

    sudo ./gor --input-raw :80  --http-allow-method GET --output-http "http://target_server:8080|200%"
    • 限制每秒的请求数
    sudo ./goreplay  --input-tcp :28020 --output-http "http://staging.com|10"# (每秒请求数限制10个以内)
    sudo ./goreplay  --input-raw :80 --output-tcp "replay.local:28020|10%"  # (每秒请求数限制10%以内)

     文件中请求以2倍的速度发出去(同时也支持限速10% 20%等)

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

     

    高级篇:

    • 将流量转发到多个端点,默认情况下,它会将相同的流量发送到所有输出。
    gor --input-tcp :28020 --output-http "http://staging.com"  --output-http "http://dev.com"
    • 将相同的流量发送到多个站点,并且平分所有流量。
    gor --input-raw :80 --output-http "http://staging.com"  --output-http "http://dev.com" --split-output true
    • HTTP 超时,默认情况下,http 请求和响应的超时时间为 5 秒。你可以像这样覆盖它:
    gor --input-tcp replay.local:28020 --output-http http://staging.com --output-http-timeout 30
    • 性能压力测试--可以将流量复制到文件,然后再对他们进行回放。回放的时候,流量会维持原始的时间间隔。如果你使用了百分比来进行速率限制,那么回放的速率会相应的增加或减少。有了这种速率限制,gor 就可以用来进行压力测试。
    gor --input-file "requests.gor|200%" --output-http "staging.com"

        目前,input-file 仅在使用基于百分比的限制器时才支持此功能。与默认限制器不同 input-file,它不会降低请求速度,而会减慢速度或加速请求发射。

    备注: 

        需要自己搭建一个接口服务才能更好理解goreplay的使用。

    相关连接:

    https://ruby-china.org/topics/37756 ........................Goreplay - 使用真实流量测试你的应用

    https://testerhome.com/articles/21180 .....................线上引流测试工具:GoReplay

    https://www.jianshu.com/p/501218e0beb1...............使用goreplay流量回放实践

  • 相关阅读:
    onkeyup事件
    asp.net学习视频资料地址链接
    企业站新闻信息的后台功能开发心得(1)
    js实现切换导航
    jquery实现上拉加载更多
    css设置input框没有边框,选中时取消背景色
    使用js修改url地址参数
    ubantu 修改hosts文件
    git的使用
    ubantu 16.04 菜单栏的位置变换
  • 原文地址:https://www.cnblogs.com/chen-xia/p/14977403.html
Copyright © 2020-2023  润新知