是否可以使用jmeter测试grpc

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

我希望

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

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

  • 以上解决方法是否可行?
  • 每个线程都会创建一个单独的TCP连接吗?

我们已经尝试了使用python客户端和locust.io进行负载测试,但是python

gRPC不兼容gevent,即使使用异步调用(例如stub.GetFeature.future),我们也达到了每个进程每秒请求的限制(异步调用不会似乎是异步的,GIL瓶颈,一旦TCP流)

回答:

以上解决方法是否可行?

您的解决方案将起作用。但是,如果您长期需要它,我建议您实现自定义Java

Sampler,而不要使用客户端类和使用BeanShell sampler

。这是非常实用的,因为它在工作方式上与实现自定义客户端+

BeanShell采样器脚本相似/相同,但是Java采样器通常比BeanShell采样器更有效,并且这种解决方案的可维护性会更好(您不会拥有2个合作伙伴依赖的组件进行维护)。

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

每个线程都会创建一个单独的TCP连接吗?

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

以上是 是否可以使用jmeter测试grpc 的全部内容, 来源链接: utcz.com/qa/426514.html

回到顶部