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
    评论
Locust是一款用于进行负载和压力测试的开源工具,可以用于测试各种类型的应用程序和协议,包括gRPCgRPC是一款高性能、跨语言、开源的远程过程调用(RPC)框架,可以用于构建可靠和高效的分布式系统。 要使用Locust进行gRPC压测,需要先安装Locust,并根据测试需求编写相应的脚本。在脚本中,需要定义gRPC的请求和响应,以及压力测试的行为和逻辑。 首先,需要导入必要的库和模块,如grpc、locust等。然后,定义一个gRPC客户端类,用于发送gRPC请求和处理响应。在该类中,可以编写请求和响应的具体逻辑,包括请求参数、协议格式等。 接下来,定义一个Locust的用户类,用于模拟并发访问gRPC服务。该类需要继承Locust的User类,并实现相关的方法,如on_start、on_stop等。在on_start方法中,可以初始化gRPC客户端并建立连接;在on_stop方法中,可以关闭连接和清理资源。 最后,编写一个Locust的测试类,用于配置并运行压测任务。在该类中,需要定义并配置相关的性能参数,如并发用户数、每秒请求数等。然后,启动Locust进行测试,可以通过Web界面监控测试的进程和结果。 总结来说,通过使用Locust进行gRPC压测,可以方便地模拟并发访问gRPC服务,验证其性能和稳定性。通过编写相应的脚本和配置相关参数,可以实现多样化的压测场景和测试需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值