GRPC 压测探索

  1. 背景

基于应用认证中心对HTTP与GRPC两种调用方式性能的对比,探索一个既支持HTTP,又支持GRPC的压测工具。

  1. 压测工具体验

压测过程中体验了多种压测工具,最终采用JMeter作为最终压测工具进行测试,JMeter 简单易用,只需安装官方提供的插件即可支持 GRPC 的测试。其他还尝试了locust、go-stress-testing,locust自身功能仅支持HTTP接口的压测,若需支持GRPC需要重写源码,较为困难,且自己重写后性能是否准确无法确定。go-stress-testing 本身基于Go语言开发,具备HTTP 与 GRPC 测试功能,但测试 GRPC 时需要自己编写代码,且官方文档几乎未对该方面进行说明,不推荐。

  1. JMeter 测试 GRPC 流程

    1.   官方插件引入

      原生 JMeter 不支持 GRPC 的测试功能,需要额外引入官方提供的插件

      将以上两个jar包放入JMeter安装目录下的 lib/ext文件夹内,后重启 JMeter 工具

      windows 环境下如下:

    1.   测试 GRPC

    1.   创建 GRPC 执行任务

    1.   参数填写

    1. Server Name or IP : 服务 IP

    2. Port Number:开放的 RPC 端口号

    3. Proto Root Directory:proto文件所在的文件夹

    4. Full Method:Proto 文件中定义的 rpc service 接口,可通过点击 Listing 自动识别

    5. Deadline In Millisecond 与 Channel Await Termination In Millisecond:压测环境设1000,可能 QPS 高时出现大量超时,建议设大点

    6. Send JSON Format With the Request:请求携带的参数,点击 Listing 后自动识别相应格式。需仔细检查格式是否有误,如上图 signHeaders 应为 map 类型,但是却自动识别成了数组+map的类型

    1.   注意事项

      由于对 GRPC 的压测需要识别 proto 文件,JMeter 在压测时会生成临时文件 protoc.exe 来对 proto 文件进行识别,若线程数设置很大,会生成大量临时文件,占据大量 C 盘临时的硬盘空间,JMeter关闭后会自动删除这些文件。但在测试过程中偶发 JMeter 关闭(可能是电脑死机后 JMeter 未正常关闭)后未自动删除这些临时文件,需手动删除。

      Windows 环境下临时文件位于 C:\Users\*******\AppData\Local\Temp

      Linux 测试机临时文件位于 /tmp

  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值