如何对 RabbitMQ 服务器进行负载测试(使用 JMeter、Python 或任何其他工具..)?

问题描述 投票:0回答:3

我已获得 RabbitMQ 服务器的访问权限,可以对其进行负载测试。我对服务器和 AMQ 协议完全陌生。我一直在网上研究,看看有哪些不同的方法。到目前为止我正在研究两种方法。

  1. JMeter;我找到了这个项目:https://github.com/jlavallee/JMeter-Rabbit-AMQP#build-dependency。它给了我一个 jar 文件,我可以用它创建 JMeter AMQP 消费者和发布者,但我不知道要在字段中放入什么。 (虚拟主机与主机 - 不知道我的端口 -..)

  2. Python;使用皮卡。 我有一个简单的发送者脚本,它从客户端连接到服务器并向服务器发送“hello world”文本。还编写了一个接收器脚本来接收那些“hello world”。如果我打开多个终端并同时运行我的发送者脚本 10 个实例,这是否是负载的确定?

再次,我问所有这些问题是因为我对服务器、云、负载测试和 Jmeter 很陌生。这只是我必须完成的任务。

感谢您能给我任何答案,让我澄清一些事情。

load jmeter rabbitmq load-testing amqp
3个回答
8
投票

您可以使用rabbitmq的Java客户端工具:
https://www.rabbitmq.com/java-client.html

它带有 PerfTest:
https://www.rabbitmq.com/java-tools.html

您可以使用以下命令运行它:

./runjava.sh com.rabbitmq.examples.PerfTest \
-h amqp://<user>:<password>@<host>:<port>/<vhost> \
-x <number_of_producers> \
-y <number_of_consumers> \
-s <message_size> \
-C <total_number_of_message> \
-u <queue_name>

如果您查看文档或源代码,您也可以使用其他标志,您可以看到它们是什么。

更新/无耻插件
我编写了一个网络应用程序,将这些工具集中到一个地方https://github.com/johnlonganecker/rabbitmq-performance-app


3
投票

一旦你有了 jar,请将其放在 jmeter/lib/ext 文件夹下。现在打开 Jmeter 并准备测试计划。

第 1 步: 要单击“测试计划”,请右键单击“测试计划”并转到“添加”->“线程(用户)”->“线程组”。为线程组命名:

第 2 步: 然后右键单击您的组并转到“添加”->“采样器”->“AMQP 发布者”:

将主机指定为“localhost”,端口指定为“5672”,用户名和密码指定为“guest/guest”。

还可以根据您的交换设置选择/取消选择“耐用”、“持久”等功能。

第 3 步: 然后右键单击您的组并转到“添加”->“侦听器”->“图形结果”:

第4步:现在保存测试计划并执行。

更详细的设置,可以参考我的博客:

http://jatinanejablog.blogspot.in/2016/06/configure-jmeter-to-load-test-rabbit-mq.html


0
投票

我有一个问题。尝试构建到 AZURE 服务总线服务器的 AMQP 发布请求。我知道这个插件可能适用于其他 AMQP 消息,而不仅仅是 Rabbit。

但是我不断收到此错误,就像没有建立连接一样:

024-01-30 11:16:20,937 信息 c.z.j.p.a.AMQPSampler:RabbitMQ ConnectionFactory使用:虚拟主机:/主机:servicebus.net
端口:5672 用户名:名称 密码:密码 超时:1000
心跳:60英寸 com.zeroclue.jmeter.protocol.amqp.AMQPPublisher@229b1d71 2024-01-30 11:16:21,021 警告 c.z.j.p.a.AMQPPublisher:null java.lang.NullPointerException:空在 com.zeroclue.jmeter.protocol.amqp.AMQPPublisher.sample(AMQPPublisher.java:109) [jmeter-amqp-plugin-0.3.0.jar:0.3.0] 在 org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:638) [ApacheJMeter_core.jar:5.4.2] 在 org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:558) [ApacheJMeter_core.jar:5.4.2] 在 org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:489) [ApacheJMeter_core.jar:5.4.2] 在 org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:256) [ApacheJMeter_core.jar:5.4.2] 在 java.lang.Thread.run(来源未知) [?:1.8.0_401]

© www.soinside.com 2019 - 2024. All rights reserved.