gor工具在测试和压测场景的应用
1 介绍
gor是golang实现的http流量复制和压测工具.可以将生产环境的http流量环境和预发布环境重现.
2 基本原理
在代理例如nginx入口服务器上执行一个进程,监听端口请求,复制请求,根据命令配置请求到其他机器
原理图:
3 安装方式
wget https://github.com/buger/goreplay/releases/download/v1.1.0/gor_1.1.0_x64.tar.gz tar -zxvf gor_1.1.0_x64.tar.gz cp gor /usr/bin/ #将解压后的gor文件复制到/usr/bin下可以直接使用gor gor -h #可以展示命令参数解释
参考安装方式,将gor打到服务的docker镜像中
4 使用场景
测试报了一个bug,需要复现,直接可以页面操作,将请求复制调用到本地,本地debug,不影响前端界面原有请求调用. 使用Gor可以过滤某些类型请求或者匹配某路径请求
直接复制增大某环境的请求对某台机器服务做压测
5 基础玩法
5.1 简单的HTTP流量复制
将本机上8080端口的流量全部复制到172.20.91.28的8080端口
gor --input-raw :8080 --output-http 'http://172.20.91.28:8080'
5.2 HTTP流量复制频率控制
将本机上8080端口的流量复制到172.20.91.28的8080端口,每秒请求不超过10个
gor --input-tcp :8080 --output-http "http://172.20.91.28:8080|10"
5.3 将本机上8080端口的流量复制到172.20.91.28的8080端口,每秒请求不超过总数的10%
gor --input-raw :8080 --output-http "http://172.20.91.28:8080|10%"
5.4 HTTP流量复制输出到文件
gor --input-raw :8080 --output-file req.log
5.5 通过HTTP流量回放进行压力测试
gor --input-file 'req.log|200%' --output-http 'http://172.20.91.28:8080'
5.6 过滤指定url,进行HTTP流量复制
gor --input-raw :8080 --output-http 'http://172.20.91.28:8080' --http-allow-method GET --http-allow-url '^[/auth/v1/].*?[/roles]$'
5.7 过滤请求头,进行HTTP流量复制
gor --input-raw :8080 --output-http 'http://172.20.91.28:8080' --http-allow-header api-version:^1\.0\d
5.8 过滤http方法,进行HTTP流量复制
gor --input-raw :8080 --output-http "http://172.20.91.28:8080" --http-allow-method GET --http-allow-method OPTIONS
5.9 将HTTP流量进行url重写后再复制
gor --input-raw :8080 --output-http 'http://172.20.91.28:8080' --http-rewrite-url /v1/user/([^\\/]+)/info:/v2/user/$1/info
6 其他
场景: 内网环境ip直接调用调不通,网络分区 做法: 两种方式
1) 打开网络分区的限制
2) 写一个请求转发脚本,运行在docker服务,连接docker地址和端口访问然后拦截某个请求将请求转发到本地
过程: 本地写好了go的脚本,编译成二进制文件,将二进制文件上传到自己gitlab的仓库,然后服务镜像构建的时候git clone下这个文件,将文件打包到镜像内部
进入容器执行如下命令:
./fowardServer --targetHost=172.20.91.28:8080 --url=/auth/v1/roles
可以将请求转发到自己目标的地址跟前端联调
参考链接
https://github.com/buger/goreplay
gor工具在测试和压测场景的应用相关推荐
- 从零开始自制实现WebServer(十八)---- 对服务器做最后的压力测试 WebBench压测小工具 项目迎来终章
文章目录 全流程实现博客链接 前引 (十八)---- 对服务器做最后的压力测试 WebBench压测小工具 项目迎来终章 1.正确处理Vmware-Station 处理器设置(初步调试过程) 2.正确 ...
- 压测场景下的 TIME_WAIT 处理
简介:压测场景下的 TIME_WAIT 处理 1. 序 某专有云项目具备压测场景,在Windows的压测机上用 LoadRunner 进行业务的压力测试,压测运行一段时间后出现大量端口无法分配的报错. ...
- 【性能测试】性能需求挖掘、性能方案制定及压测场景设计之疑惑与思考(一)
压力测试 模拟用户在同一时间对服务器发送大量请求,以此查看服务器性能指标,尤其关注大业务量情况下运行系统性能的变化(反应变慢.是否会内存泄漏导致系统逐渐崩溃.是否能恢复),测试系统的限制和故障恢复能力 ...
- jmeter一个线程组多个请求_Jmeter模拟真实用户压测场景之阶梯螺纹线程组、终极线程组、并发线程组实例...
我们有时需要模拟非常真实复杂的用户压测场景,可以用到此插件来设计场景 1.安装插件,选项--Plugins Manager打开安装页面 2.搜索standard set并安装,重启jmeter,查看测 ...
- linux tcp压测工具,02.监控和压测工具 - 2.4.压测工具 - 《Linux性能调优指南》 - 书栈网 · BookStack...
压测工具其它有用工具 在这里,我们会讨论主要的压力测试工具,选择合适的压测工具,才能准确衡量系统性能.好的压测工具有很多,可能的功能如下: 发起压力 监控性能 监控系统使用率 生成报告 基准测试无非就 ...
- 从入门到精通进阶篇 - 设置负载阶梯式压测场景(详解教程)
1.简介 在性能测试中,有时需要模拟一种实际生产中经常出现的情况,即:从某个值开始不断增加压力,直至达到某个值,然后持续运行一段时间,然后继续加压达到某个值持续运行,如此循环直到达到预期的峰值,运行一 ...
- Kafka压力测试(写入MQ消息压测和消费MQ消息压测)
1.测试目的 本次性能测试在正式环境下单台服务器上Kafka处理MQ消息能力进行压力测试.测试包括对Kafka写入MQ消息和消费MQ消息进行压力测试,根据10w.100w和1000w级别的消息处理结果 ...
- jmeter constant timer 如何添加_阿里巴巴在开源压测工具 JMeter 上的实践和优化
Apache JMeter 是 Apache 旗下的开源压测工具,创建于 1999 年初,迄今已有超过 20 年历史.JMeter 功能丰富,社区(用户群体)庞大,是主流开源压测工具之一. 性能测试通 ...
- tcp压测工具_【解决方案】性能压测及分析调优实践
[关键导读]结合一次重保活动的性能压测需求,详解了整体的性能测试策略及性能分析思路,并在实施过程中有效利用了网易易测的NPT性能测试平台一站式完成了压测场景设计.执行.业务指标监控.性能指标分析等活动 ...
最新文章
- 图像变换——等距变换,相似变换,仿射变换,投影变换
- java 多线程bean 注入_java多线程中注入Spring对象问题
- php lumen auth,学习 Lumen 用户认证 (一)
- 【SRIO】3、RapidIO串行物理层的包传输过程
- UA MATH563 概率论的数学基础 中心极限定理10 Borel-Cantelli引理
- 二维指针*(void **)的研究(uC/OS-II案例)
- 数据结构与算法 | 归并排序
- Spring boot + maven
- Unknown symbol platform_driver_unregister (err 0)
- Linux之文件系统介绍
- iOS 11.2 版本紧急修复黑屏 Bug,却遇 FaceID 识别错误,真实原因在此
- CCCC-GPLT L2-017. 人以群分 团体程序设计天梯赛
- Linux环境Eclipse + Tomcat + MySQL 构造J2EE方法开发环境
- java游戏初始化参数过多,从头认识java-4.6 成员的初始化
- oracle查询耗资源的进程,常用Oracle进程资源查询语句(运维必看)
- python指纹识别_指纹识别是目前最成熟的识别技术!Python能分分钟做出一个来!...
- 安装Selenium+Firefox+Firepath+Firebug
- appium for java教程_Java教程:Appium环境搭建
- 15个快速学习苹果Swift编程语言的入门教程
- c语言智能小车项目的感想,基于51单片机的遥控智能小车实作心得