当前位置: 首页 > 知识库问答 >
问题:

是否可以使用jmeter测试grpc

公西永嘉
2023-03-14

我想知道是否有人试图使用jmeter测试gRPC应用程序。

我希望

  • 我可以使用非阻塞/异步存根编写一个gRPC客户端类,该存根对服务器进行非阻塞调用
  • 创建上述客户端的Jar
  • 将Jar导入JMeter
  • 使用Jeter BeanShell采样器中的Java方法

在花时间尝试上述方法之前,我想看看是否有人尝试过类似的方法

  • 如果上述解决方法有效?
  • 每个线程会创建一个单独的传输控制协议吗?

我们已经用python客户端和蝗虫进行了负载测试。io,但python gRPC与gevent不兼容,甚至与异步调用(例如存根)也不兼容。GetFeature。将来,我们将达到每个进程每秒请求数的限制(异步调用似乎不是异步的,GIL瓶颈,once TCP流)

共有2个答案

薛承基
2023-03-14

请参阅grpc-Client java项目(maven),该项目使用JMeter采样器创建gRPC客户端以启用JMeter压力测试

使用maven构建项目,并将生成的jar复制到JMeter lib/ext文件夹(例如/usr/local/apache-JMeter-3.1/lib/ext/)中,以便采样器位于类路径中

之后,当您启动JMeter时,您应该能够在“java请求”采样器中看到类。

尹臻
2023-03-14

如果上述解决方法有效?

你的解决方案会奏效的。但如果您长期需要它,我建议您实现定制Java采样器,而不是使用客户机类和BeanShell采样器。它非常实用,因为从工作角度来看,它与实现定制客户端BeanShell sampler脚本类似/相同,但Java sampler通常比BeanShell sampler更高效,并且这种解决方案的可维护性更好(您将不会有两个共同依赖的组件需要维护)。

一个更奇特的选择是创建自己的JMeter插件(我在这里提供的链接很旧,不太准确,但这是一个很好的起点)。这是一项相当大的投资,但如果您发现一个更简单的解决方案通常有效,但有一些主要限制,或者您需要更高级别的可配置性和控制,那么最终可能是值得的。

每个线程会创建一个单独的传输控制协议吗?

每个线程独立运行,但是每个线程是否有自己的连接将取决于您如何实现它们。在直接实现(采样器创建和破坏连接)中,每个线程将有一个单独的传输控制协议。但是JMeter具有线程之间共享的属性,其中可以包含对象。因此您可以通过这种方式在线程之间共享连接。或者您可以实现配置元素,它可以包含所有线程共享的连接池。

 类似资料:
  • 我有一个函数,使用。我想给它加一个留档测试。但是,看起来get_type_hints无法解析doctest中定义的类型。 以下是一个简化的示例: 当运行它与它抛出。

  • 问题内容: 我正在使用JQuery从URL中获取信息并异步显示在我的页面上。该URL来自其他域,因此我使用JSONP来获取数据。很好 但是,当远程URL关闭时(偶尔发生),我的页面挂起,因为JQuery AJAX 没有调用“成功”或“错误”功能。 我正在使用JQuery 1.7。 我的代码如下: 如果“ somePage”启动,那么我会看到消息“确定”。如果“ somePage”无法访问,那么我什

  • 问题内容: 如果是跑它运行在您的文件结尾通过运行启动格式的功能和使用(* T testing.T)模块。我想知道文件中的每个功能是同时运行还是确定地分别运行每个功能?是否为每个人创建一个执行例程?如果确实为每个例程创建了一个go例程,是否可以某种方式监视go例程?是否有可能做类似的事情并为每个实例获取一个实例并对其进行监控,诸如此类? 注意:这个问题假设您使用go(测试)随附的测试框架。 问题答案

  • 我已经为Jenkins项目的集成公司建立了一个PoC,当Git存储库中有一个检查时,该PoC将构建并执行测试。当测试完成后,Jenkins将更新在Xray for JIRA中管理的测试。 测试是用cucumber写的。我曾徒劳地试图导致一个单一的测试产生一个失败,只是为了能够将它添加到我将要给高层管理人员的演示中。 以下是我的文件helloworld.feature的内容: 我知道不知道小cucu

  • 我试图弄清楚是否可以在Express.js应用程序的上下文中运行TestCafe测试。我的想法是创建一个表单,接受输入(如UPC代码),然后单击表单上的submit,它将导致TestCafe测试以无头模式(在某处)生成,并将UPC加载到此页面https://www.ebay.com/sh/research. 从那里,TestCafe将从页面获得结果并将它们粘贴到我的数据库中。 我把测试放在一个名为

  • 问题内容: 我想根据元素的属性来验证元素是否可见,但是我没有找到一种有效的方法来使用新的Xcode 7 UI测试材料。 我已经尝试过,但是它们似乎没有按我预期的那样工作。我想他们将与该物业合作。隐藏的元素不应该存在并且不能被击中……但这不是当前的行为(我可以理解行为……但是隐藏的元素不应被IMO击中)。 还有另一种方法来验证“隐藏”属性值吗? 问题答案: 从Xcode 7.1 Beta 3开始,U