searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

goreplay工具的使用分享

2024-09-04 09:42:34
17
0

1、多参数无法混用
    工具经常用到的一个场景就是过滤header通过倍速播放,也就是--http-allow-header过滤参数与input-file的倍速播放同时使用,但是实际经过测试发现,这两个参数并不能同时使用,只能达到过滤效果,而无法倍速。该问题可以通过先过滤生成相应的过滤后的文件,然后再次用过滤后的文件进行回放,就可以使用倍速功能了。

2、如何通过参数重新生成可用的gor文件以及注意点

    可以借助工具的-output-stdout参数,再结合--http-allow-header过滤参数来生成最终过滤的文件,当然,这里还可以使用其他过滤参数,如--http-allow-method、--http-allow-url、--http-disallow-url、--http-disallow-header。
    实际使用方法示例:
    比如我们想匹配header中Func为Test的请求,则命令可为:

./gor --input-file "xxx.gor" -output-stdout --http-allow-header Func:^Test$ > test.gor

    注意:

    1)过滤参数是支持正则的。

   2)过滤后的文件应以类似“1 8a62783a0a5fdafda132141 1222695600036555509 0”第一行为开头,以🐵🙈🙉为最后一行结尾,其他无关字符串需要删除(可以在文件中搜索DEBUG,或者input-file,两者在相邻行或者同一行则为正常,否则需要处理)


3、加速回放瓶颈以及解决方案
    由于工具本身的限制,工具本身是单goroutine运行,所以会存在一定的性能瓶颈。测试的时候,业务接口qps可能存在压不上去的问题,我们建议的解决方案时可以启动多个工具,这里也需要注意一点,再开启进程时,需要注意之前的流量还会回放,要做好幂等性处理,或者将文件拆分为多个,这样就避免了反复运行导致的问题

4、回放工具与实际qps不一致问题
    如果回放环境与实际复制流量的环境并非完全一致,可能会出现工具的倍速播放与实际业务的qps并不完全对应的结果,所以需要注意环境的各项参数,尽量保持一致,以免影响相关测试结论

5、文件循环播放注意点
    文件循环播放参数为--input-file-loop,但是实际不支持大文件的循环播放,若需循环播放,经过测试,可能的文件大小尽量保持在500M以内,该限制在官方文档中也有说明,但并未具体指出最大支持的文件大小,实际可能需要根据情况来测试确定

6、中间件开发以及注意事项
    goreplay提供了middleware工具开发,可以通过开发插件灵活处理参数,但我们在开发过程中碰到了一些问题,比如在修改body时,长度是限制的,想在body参数中新增加参数,实际会出现增加不上的情况,原因在于goreplay从最开始就固定了body的长度,只能在该长度内处理,这一点需要处理

7、常用参数总结以及最佳实践
    实际我们推荐的最佳用法举例:

gor --input-file test.gor --middleware "./goreplay-convert-tool" --output-http="目标地址"  --stats --output-http-stats

    输入文件搭配倍速播放,然后指定回放地址,这样可以满足绝大多数回放测试的场景,如果需要自己处理请求参数,则再加上middleware即可,实际使用过程中我们还需要观察监控, --stats --output-http-stats可在终端返回一些比较简单的如qps数据,但是实际业务数据还需要结合业务系统监控进行分析。同时注意在回放前要确认回放环境的数据,不要和线上数据进行混淆,避免影响测试结论和其他环境。

    关于goreplay的日常用法,暂时就先分享以上的一些使用心得。

 

 

 

 

0条评论
0 / 1000
x****n
4文章数
0粉丝数
x****n
4 文章 | 0 粉丝
x****n
4文章数
0粉丝数
x****n
4 文章 | 0 粉丝
原创

goreplay工具的使用分享

2024-09-04 09:42:34
17
0

1、多参数无法混用
    工具经常用到的一个场景就是过滤header通过倍速播放,也就是--http-allow-header过滤参数与input-file的倍速播放同时使用,但是实际经过测试发现,这两个参数并不能同时使用,只能达到过滤效果,而无法倍速。该问题可以通过先过滤生成相应的过滤后的文件,然后再次用过滤后的文件进行回放,就可以使用倍速功能了。

2、如何通过参数重新生成可用的gor文件以及注意点

    可以借助工具的-output-stdout参数,再结合--http-allow-header过滤参数来生成最终过滤的文件,当然,这里还可以使用其他过滤参数,如--http-allow-method、--http-allow-url、--http-disallow-url、--http-disallow-header。
    实际使用方法示例:
    比如我们想匹配header中Func为Test的请求,则命令可为:

./gor --input-file "xxx.gor" -output-stdout --http-allow-header Func:^Test$ > test.gor

    注意:

    1)过滤参数是支持正则的。

   2)过滤后的文件应以类似“1 8a62783a0a5fdafda132141 1222695600036555509 0”第一行为开头,以🐵🙈🙉为最后一行结尾,其他无关字符串需要删除(可以在文件中搜索DEBUG,或者input-file,两者在相邻行或者同一行则为正常,否则需要处理)


3、加速回放瓶颈以及解决方案
    由于工具本身的限制,工具本身是单goroutine运行,所以会存在一定的性能瓶颈。测试的时候,业务接口qps可能存在压不上去的问题,我们建议的解决方案时可以启动多个工具,这里也需要注意一点,再开启进程时,需要注意之前的流量还会回放,要做好幂等性处理,或者将文件拆分为多个,这样就避免了反复运行导致的问题

4、回放工具与实际qps不一致问题
    如果回放环境与实际复制流量的环境并非完全一致,可能会出现工具的倍速播放与实际业务的qps并不完全对应的结果,所以需要注意环境的各项参数,尽量保持一致,以免影响相关测试结论

5、文件循环播放注意点
    文件循环播放参数为--input-file-loop,但是实际不支持大文件的循环播放,若需循环播放,经过测试,可能的文件大小尽量保持在500M以内,该限制在官方文档中也有说明,但并未具体指出最大支持的文件大小,实际可能需要根据情况来测试确定

6、中间件开发以及注意事项
    goreplay提供了middleware工具开发,可以通过开发插件灵活处理参数,但我们在开发过程中碰到了一些问题,比如在修改body时,长度是限制的,想在body参数中新增加参数,实际会出现增加不上的情况,原因在于goreplay从最开始就固定了body的长度,只能在该长度内处理,这一点需要处理

7、常用参数总结以及最佳实践
    实际我们推荐的最佳用法举例:

gor --input-file test.gor --middleware "./goreplay-convert-tool" --output-http="目标地址"  --stats --output-http-stats

    输入文件搭配倍速播放,然后指定回放地址,这样可以满足绝大多数回放测试的场景,如果需要自己处理请求参数,则再加上middleware即可,实际使用过程中我们还需要观察监控, --stats --output-http-stats可在终端返回一些比较简单的如qps数据,但是实际业务数据还需要结合业务系统监控进行分析。同时注意在回放前要确认回放环境的数据,不要和线上数据进行混淆,避免影响测试结论和其他环境。

    关于goreplay的日常用法,暂时就先分享以上的一些使用心得。

 

 

 

 

文章来自个人专栏
proto与golang
2 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0