首页 > 其他分享 >【Locust】实现grpc接口性能测试

【Locust】实现grpc接口性能测试

时间:2024-07-22 10:51:42浏览次数:14  
标签:name proto grpc locust Locust 接口 time import

一、locust

https://www.locust.io/

 

二、准备测试服务

1、下载测试服务

https://github.com/grpc/grpc.git

2、使用编辑器或者IDE打开

 3、proto文件位置

 4、创建测试代码

安装相关库

pip install locust grpcio grpcio-tools

python -m grpc_tools.protoc -I=/path/to/proto --python_out=/path/to/proto --grpc_python_out=/path/to/proto /path/to/proto/helloworld.proto

 

三、编写测试脚本

可以将脚本放入pb2文件同一目录,创建test.py

import sys
import grpc
import inspect
import time
import gevent
from locust.contrib.fasthttp import FastHttpUser
from locust import task, events, constant
from locust.runners import STATE_STOPPING, STATE_STOPPED, STATE_CLEANUP, WorkerRunner
import helloworld_pb2
import helloworld_pb2_grpc

def stopwatch(func):
    
    def wrapper(*args, **kwargs):
       
       
        previous_frame = inspect.currentframe().f_back
        _, _, task_name, _, _ = inspect.getframeinfo(previous_frame)
        start = time.time()
        result = None
        try:
            result = func(*args, **kwargs)
        except Exception as e:
            total = int((time.time() - start) * 1000)
            events.request.fire(request_type="TYPE",
                                        name=task_name,
                                        response_time=total,
                                        response_length=0,
                                        exception=e)
        else:
            total = int((time.time() - start) * 1000)
            events.request.fire(request_type="TYPE",
                                        name=task_name,
                                        response_time=total,
                                        response_length=0)
        return result
    return wrapper

class GRPCMyLocust(FastHttpUser):
    host = 'http://127.0.0.1:50051'
    wait_time = constant(0)
    def on_start(self):
        pass
    def on_stop(self):
        pass
    @task
    @stopwatch
    def grpc_client_task(self):
        try:
            with grpc.insecure_channel('127.0.0.1:50051') as channel:
                stub = helloworld_pb2_grpc.GreeterStub(channel)
                response = stub.SayHello(helloworld_pb2.HelloRequest(name='criss'))
                print(response)
        except (KeyboardInterrupt, SystemExit):
            sys.exit(0)

 

四、启动grpc服务端

 

五、启动测试脚本

 

六、执行测试

1、打开UI界面

 2、检查服务端输出

 

 

3、检查UI界面显示

 到此,我们简单完成了使用locust对grpc服务的测试

 

参考链接:

Locust完成gRPC协议的性能测试-腾讯云开发者社区-腾讯云

locust压测grpc locust压测sdk_mob6454cc64e36b的技术博客_51CTO博客

Locust对gRPC协议进行压测 - DaisyLinux - 博客园

 

标签:name,proto,grpc,locust,Locust,接口,time,import
From: https://www.cnblogs.com/fireblackman/p/18315620

相关文章

  • Java--接口
    目录语法规则例子实现多个接口接口之间的继承抽象类和接口的区别在现实生活中,接口的例子比比皆是,比如:电源插座,主机上的USB接口等。这些插口中可以插所有符合规范的设备。通过这个例子我们知道,接口就是公共的行为规范标准,大家在实现时,只要符合规范标准,就可以通用。在jav......
  • 超好用!空号检测接口使用与调用示例
    空号检测接口是通过调用第三方提供的API接口,实现对手机号码是否为空号的检测服务。它可以帮助快速、准确地识别出无效号码,避免无效的通信,提高通信效率,适用于短信群发、电话营销、注册验证等场景。一、在选择空号检测接口时,你可以考虑以下因素:1.数据准确性:确保接口提供的检......
  • .net6 grpc使用
    .NETCore(.NET6)中gRPC使用 目录一、简介二、创建gRPC服务端1.创建gRPC项目2.编写自己的服务三、创建gRPC客户端1.创建客户端项目2.grPC服务https的调用3.gRPC内网http调用4.IOC注入的方式调用gRPC四、webapi中加入gRPC 回到顶部一、简介简单解析......
  • Ibert眼图测试与高速接口的介质
    光纤的分类:单模和多模; SRIO和万兆网用普通的电信号作为介质存在着速率上的不足,在这个前提下需要依赖光纤;Ti的LMK系列是目前常用的接收光纤信号的高速收发器器件,这个器件可以将输入转换成数字信号传递给主控芯片;单模光纤内部一般只有一种波长的光:1310nm或1550nm,这种光纤传输......
  • ARM体系结构和接口技术(十)按键中断实验①
    一、按键中断实验(一)分析按键电路图(二)芯片手册二、按键中断实验分析注:NVIC----Cortx-M核GIC----Cortx-A核(一)查看所有外设的总线以及寄存器基地址注:GIC的总线是A7核的内部总线,也就是说,它是由ARM公司完成的注:EXTI的时钟源无需手动使能,它一直是使能状态(二)RCC章节(......
  • ARM体系结构和接口技术(九)异常
    文章目录(一)异常模式(二)Cortex-A7核的异常处理流程分析1.保存现场(系统自动完成)2.恢复现场(程序员手动完成)3.异常处理流程(三)软中断验证异常处理函数异常就是处理器从用户模式切换到对应的异常模式的事件,进入异常模式之后执行对应的异常代码。异常源:引发处理器进入......
  • 利用接口进行代码复用
     userQueryServicepublicinterfaceUserQueryService{publicMap<Long,UserDTO>queryUserMap(List<?extendsUserIdFunction>list);} publicinterfaceUserIdFunction{LonggetUserId();}获取userId的复用代码主义泛型参数@Slf4j@Servicepub......
  • SpringBoot 测试Control接口方法
    在SpringBoot中对Controller接口方法进行测试是保障应用稳定性和正确性的关键步骤: 单元测试: -选择合适的测试框架:常用的有JUnit,它提供了丰富的断言方法和测试运行机制。结合Mockito可以方便地创建模拟对象和设置预期行为。-针对业务逻辑:重点测试Controller......
  • IDEA的APIPost接口测试插件详解
    APIPOST官方网址一、安装APIPost插件打开IntelliJIDEA:启动您的IntelliJIDEA开发环境。导航到插件设置:在Windows或Linux上,点击File>Settings。在macOS上,点击IntelliJIDEA>Preferences。搜索并安装APIPost插件:在设置窗口中,选择Plugins。点击Marketplace标签......
  • 第三节:面向切面解决问题、本地消息表实现最终一致性、热门接口耗时长问题
    一.        二.        三.         !作       者:Yaopengfei(姚鹏飞)博客地址:http://www.cnblogs.com/yaopengfei/声     明1:如有错误,欢迎讨论,请勿谩骂^_^。声     明2:原创博客请在转载......