<p>在性能测试中,有同学问起GoReplay 这个监控工具。今天就给大家准备这方面的笔记。先收藏,再点赞,接着咱们一起看。</p>
讯享网
GoReplay是一个开源的网络监控工具,它可以记录你的实时流量,并用于跟踪、负载测试、监控和详细分析。GoReplay提供了一种unique approach for shadowing方式:GoReplay不是以代理形式,而是监听网络接口上的流量,不需要对生产基础设施进行任何更改,而是在与服务相同的机器上运行GoReplay守护进程。
首先安装Golang及相关依赖环境
讯享网
安装GoReplay
讯享网 参数解释 –input-raw :用来捕捉http流量,需要指定ip地址和端口 –input-file :接收流量 –output-file:保存流量的文件 –input-tcp:将多个Goreplay实例获取的流量聚集到一个Goreplay实例 –output-stdout:终端输出 –output-tcp:将获取的流量转移至另外的Goreplay实例 –output-http:流量释放的对象server,需要指定IP地址和端口 –output-file:录制流量时指定的存储文件 –http-disallow-url :不允许正则匹配的URL –http-allow-header :允许的Header头 –http-disallow-header:不允许的Header头 –http-allow-method:允许的请求方法,传入值为GET,POST,OPTIONS等 –input-file-loop:无限循环,而不是读完这个文件就停止了 –output-http-workers:并发请求数 –stats –out-http-stats 每5秒输出一次TPS数据(查看统计信息) –split-output true: 按照轮训方式分割流量 –output-http-timeout 30s:http超时30秒时间设置,默认是5秒
命令行使用
捕捉流量并通过终端输出
https://blog.csdn.net/SQtester/article/details/gor –input-raw :8083 –output-stdout
上述命令将监控8083端口上所有的流量,并通过终端stdout输出。你可以通过浏览器或者curl访问8083端口,然后在终端查看gor输出所有的http请求。
捕捉流量并实时同步到另一台机器

讯享网 https://blog.csdn.net/SQtester/article/details/gor –input-raw :8000 –output-http=“http://example:8001"
上述命令将8000端口的流量实时同步访问http://example:8001服务器,你在访问第一台服务器时,将看到流量以相同的顺序请求到第二台。
将捕捉流量保存到文件中,然后释放到其他机器
- 首先通过–output-file 保存流量(有时候实时同步流量是很难做到的, 所以Goreplay提供了这种先保存后释放的模式:)
https://blog.csdn.net/SQtester/article/details/gor –input-raw :8000 –output-file = requests.gor
上述命令将8000端口的流量,保存到requests.gor文件中(必须是.gor后缀,其它后缀经测释放时有问题)。
2.释放保存的流量
讯享网 https://blog.csdn.net/SQtester/article/details/gor –input-file requests.gor –output-http = ”http://另个服务器ip:8001“
上述命令将释放所有保存在requests.gor中的请求通过相同的时间顺序释放到服务器http://另个服务器ip:8001。
Goreplay的限速机制和请求过滤
限速机制
由于生产服务器配置一般远高于测试服务器配置,所以直接将生产服务器全部流量同步到测试服务器是不可行的,Goreplay提供了两种策略:

- 限制每秒的请求数
https://blog.csdn.net/SQtester/article/details/gor –input-tcp :28020 –output-http ”http://staging.com|10"# (每秒请求数限制10个以内) https://blog.csdn.net/SQtester/article/details/gor –input-raw :80 –output-tcp “replay.local:28020|10%” # (每秒请求数限制10%以内)
2.基于Header或URL的参数限制一些请求,为指定的Header或者URL的请求设定限制的百分比
讯享网https://blog.csdn.net/SQtester/article/details/gor –input-raw :80 –output-tcp “replay.local:28020|10%” –http-header-limiter “X-API-KEY: 10%” https://blog.csdn.net/SQtester/article/details/gor –input-raw :80 –output-tcp “replay.local:28020|10%” –http-param-limiter “api_key: 10%”
请求过滤
当需要捕捉指定路径的请求流量时,可以使用该机制,如只同步/api路径下的请求
https://blog.csdn.net/SQtester/article/details/gor –input-raw :8080 –output-http staging.com –http-allow-url /api
性能测试
性能测试,可以不考虑请求的顺序和速率,并且要求无限循环
讯享网https://blog.csdn.net/SQtester/article/details/gor –input-file ‘request.gor|10000%’ –input-file-loop –output-http ‘http://host2.com' –output-http-workers 100 –stats –output-http-stats–input-file 从文件中获取请求数据,重放的时候 100x 倍速
–input-file-loop 无限循环,而不是读完这个文件就停止
–output-http 发送请求到 http://host2.com
–output-http-workers 并发 100 发请求
–stats –output-http-stats 每 5 秒输出一次 TPS 数据
表示放大2倍速度来回放
https://blog.csdn.net/SQtester/article/details/gor –input-file “requests.gor|200%” –output-http “staging.com”
回放速率不超过10QPS(绝对值)
讯享网https://blog.csdn.net/SQtester/article/details/gor –input-tcp :28020 –output-http “http://staging.com|10"
回放不超过原流量的10%(百分比,这里是总流量的占比)
https://blog.csdn.net/SQtester/article/details/gor –input-raw :8083 –output-tcp ”replay.local:1111|10%“
以上就是关于GoReplay工具的详细操作笔记,有环境的同学可以跟着笔记操练起来。还有更多资料可以领取学习。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/177679.html