前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >改造开源工具——流量回放工具goreplay支持压测统计

改造开源工具——流量回放工具goreplay支持压测统计

作者头像
用户5521279
发布2020-06-28 14:58:00
2.3K2
发布2020-06-28 14:58:00
举报
文章被收录于专栏:搜狗测试搜狗测试

背景

目前输入法服务端的例行性能测试主要使用开源的流量回放工具goreplay,这个工具本身是做流量回放使用的,也可以在回放流量的时候缩小或者放大倍数,以达到性能测试的目的,但是毕竟不是专业做性能测试的工具,就像这句名言说的“不是他的活他要干”,所以对于结果统计,goreplay不是很擅长,为了让他支持客户端统计,需要对他做个升级;

goreplay自带的统计

说他不支持结果统计,其实有些冤枉他,goreplay自带命令行也是支持结果统计的,参数是:--stats --output-http-stats加了这个命令行之后,控制台输出是这样的:

其中倒数第二列等同于当前的QPS,但是这就是仅有的统计项了,并没有区分返回码、响应时间、TP90、TP99等指标;

prometheus(公众号回复prometheus可查看往期prometheus的介绍文章)

官网解释:开源的监控解决方案

metrics

prometheus的监控数据源,详细解释可参考https://www.investopedia.com/terms/m/metrics.asp

改造目标

让goreplay支持实时metrics统计,在goreplay执行流量回放与性能测试时,实时统计出作为压测客户端的goreplay当前的QPS和响应时间等各项指标;

实施过程

  1. 分析源码,找到源码中发出请求的函数;
  2. 为了获取请求状态码及对应QPS,在获取请求返回值的位置插入counter metric;
  3. 为了获取不同请求响应时间等指标,需要在发出请求前记录starttime,请求返回后记录endtime,记录时间消耗的histogram metric;
  4. 在goreplay启动后注册metrics接口及服务监听端口;
  5. prometheus服务中注册goreplay客户端的metrics服务;
  6. grafana系统中建立dashboard,统计需要的数据指标;

效果

  1. 源码中http_client.go中加入metrics相关代码(源码地址见文末)
  2. main.go进行metrics注册;
  3. prometheus配置文件中注册goreplay_client metrics
  1. 启动goreplay的时候需要加命令行-output-http-compatibility-mode true以启动结果统计;
  1. 启动goreplay时,查看监听端口,发现有注册的28081
  2. 接口访问http://10.1xx.xx.xx:28081/metrics
  1. grafana中新建dashboard查询需要的性能测试指标:

至此对goreplay的改造工作就做完了,通过metrics实现了从客户端统计压测过程中的各项指标;

源码地址,由于提交分支需要goreplay作者审核,所以github上新建了一个工程,大家可以下载使用https://github.com/lidedede/gor

其中gor_ldd是centos7编译的二进制,可以直接使用;附完整命令行:./gor_ldd --input-file "xxx.gor|1500%" --output-http http://10.1xx.xx.xx:1xxx --stats --output-http-stats --input-file-loop -output-http-workers 10000 -output-http-workers-min 5000 -output-http-compatibility-mode true

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 搜狗测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • goreplay自带的统计
  • prometheus(公众号回复prometheus可查看往期prometheus的介绍文章)
  • metrics
  • 改造目标
  • 实施过程
  • 效果
  • 至此对goreplay的改造工作就做完了,通过metrics实现了从客户端统计压测过程中的各项指标;
  • 源码地址,由于提交分支需要goreplay作者审核,所以github上新建了一个工程,大家可以下载使用https://github.com/lidedede/gor
相关产品与服务
Grafana 服务
Grafana 服务(TencentCloud Managed Service for Grafana,TCMG)是腾讯云基于社区广受欢迎的开源可视化项目 Grafana ,并与 Grafana Lab 合作开发的托管服务。TCMG 为您提供安全、免运维 Grafana 的能力,内建腾讯云多种数据源插件,如 Prometheus 监控服务、容器服务、日志服务 、Graphite 和 InfluxDB 等,最终实现数据的统一可视化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档