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

ice助手来了·2020-07-09 14:26
背景目前输入法服务端的例行性能测试主要使用开源的流量回放工具goreplay,这个工具本身是做流量回放使用的
迅敏康
B轮福建省2014-04
测试测试测
我要联系

编者按:本文来自微信公众号“搜狗测试”(ID:SogouQA),作者:lidedede,36氪经授权发布。

背景


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

goreplay自带的统计

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

1223

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

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

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

王企鹅无

metrics

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

改造目标

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

实施过程

分析源码,找到源码中发出请求的函数;

为了获取请求状态码及对应QPS,在获取请求返回值的位置插入counter metric;

为了获取不同请求响应时间等指标,需要在发出请求前记录starttime,请求返回后记录endtime,记录时间消耗的histogram metric;

在goreplay启动后注册metrics接口及服务监听端口;

prometheus服务中注册goreplay客户端的metrics服务;

grafana系统中建立dashboard,统计需要的数据指标;

效果

源码中http_client.go中加入metrics相关代码(源码地址见文末)

main.go进行metrics注册;

prometheus配置文件中注册goreplay_client metrics

 

 

+1
14

好文章,需要你的鼓励

参与评论
评论千万条,友善第一条
后参与讨论
提交评论0/1000

作者有点忙,还没写简介

报道的项目

迅敏康
我要联系
测试测试测

提及的项目

查看项目库
36氪APP让一部分人先看到未来
36氪
鲸准
氪空间

推送和解读前沿、有料的科技创投资讯

一级市场金融信息和系统服务提供商

聚焦全球优秀创业者,项目融资率接近97%,领跑行业