0


RabbitMQ压测简介

RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。

所有主要的编程语言均有与代理接口通讯的客户端库。

详细见以下链接介绍:

  • rabbitmq_百度百科 (baidu.com)   
    
  • 【RabbitMQ】MQ的基本概念、RabbitMQ简介及安装-CSDN博客   
    
  • RabbitMQ详解_rabbit mq-CSDN博客
    

本文主要介绍两种压测工具来压测RabbitMQ,第一种是基于** Jm**eter-Rabbit-AMQP插件,使用Jmeter进行压测,另外一种是RabbitMQ自带的RabbitMQ-perf.jar压测工具,该工具支持对prometheus的集成;

  1. 使用jmeter插件进行压测
  • 01 安装JmeterRabbitMQ插件

Jmeter没有内置对RabbitMQ的支持,在使用Jmeter发送和接受RabbitMQ以前,需要首先下载相应插件包编译后放置到Jmeter的lib当中(
GitHub - jlavallee/JMeter-Rabbit-AMQP: A JMeter plugin to publish & consume messages from RabbitMQ or any AMQP message broker
)安装完插件包以后,新建Jmeter脚本,可以在脚本中看到AMQP Publisher和AMQP Consumer取样器,分别对应AMQP协议的消息发送者和消息接受者。

更加详细安装编译插件参见以下链接介绍:

Jmeter对RabbitMQ压力测试_jmeter压测rabbitmq-CSDN博客

  • 02 Jmeter发送RabbitMQ消息

新建AMQP Publisher,因为本示例采用的是Direct Fanout模式,填写完RabbitMQ连接信息以后,在Publisher里需要指定对应的消费者的绑定Key以及交换机

  • 03 Jmeter接受RabbitMQ消息

新建AMQP Consumer,此处指定RabbitMQ连接信息,交换机名称,类型以及队列名即可(需要和生产者匹配)

运行脚本,查看结果数,此时也可以通过RabbitMQ控制台看到消息发送和接受的情况。

  1. 使用RabbitMQ-perf.jar进行压测
  • 01 首先上官网进行工具介绍及下载

RabbitMQ 性能测试https://perftest.rabbitmq.com/

  • 02 使用简单的命令进行压测
#使用命令查看基本用法
java -jar perf-t帮est.jar --help
#优雅退出
java -jar perf-test.jar --shutdown-timeout 20
#连接RabbitMQ,注意特殊符号需要URLencode转移
java -jar perf-test.jar --uri "amqp://用户名:密码@ip:端口"
#使用多队列
java -jar perf-test.jar --queue-pattern 'perf-test-%d' \ --queue-pattern-from 1 --queue-pattern-to 10 \ --producers 100 --consumers 100
#创建高负载
java -jar perf-test.jar --queue-pattern 'perf-test-%d' \ --queue-pattern-from 1 --queue-pattern-to 500 \ --producers 500 --consumers 1500
  • 03 与prometheus集成
#metrics采集相关帮助
java -jar perf-test.jar --metrics-help
#集成prometheus,集成端口8090,可以修改
java -jar perf-test.jar --metrics-prometheus \ --metrics-prometheus-port 8090 --metrics-prometheus-endpoint perf-test-metrics

Prometheus 希望抓取或轮询单个应用实例的指标,因此 PerfTest 会启动 侦听端口 8080 并在端点上公开指标的 Web 服务器。这些默认值 可以更改:/metrics

下面是 PerfTest 可以收集的指标:
  • 默认指标:已发布、返回、已确认、已确认和已使用的消息数、消息数 延迟,发布者确认延迟。消息延迟是许多类型的工作负载中的主要问题,可以在此处轻松监控。发布者确认延迟反映了消息可被视为不安全的时间。是的 一旦使用 / 选项,就计算。 只要 PerfTest 支持监视系统,默认指标就可用 已启用。--confirm-c
  • 客户端指标:这些是 Java 客户端指标。 与默认的 PerfTest 指标相比,启用这些指标应该不会带来太多好处。 除了查看 PerfTest 在打开连接数方面的行为 例如,和渠道。客户端指标使用 or 标志启用。-mc--metrics-client
  • JVM 内存指标:这些指标报告 JVM 的内存使用情况,例如当前堆大小等。 它们有助于更好地了解客户端行为,例如堆内存波动 可能是由于频繁的垃圾回收可以解释高延迟数字。这些指标 使用 OR 标志启用。-mjm--metrics-jvm-memory
  • JVM 线程指标:这些指标报告 PerfTest 进程中使用的 JVM 线程数, 以及他们的状态。这对于优化 PerfTest 的使用以使用更少的资源模拟高负载非常有用。 这些指标是使用 or 标志启用的。-mjt--metrics-jvm-thread
  • JVM GC 指标:这些指标报告垃圾回收活动。它们可能因以下情况而异 在使用的 JVM、其版本和 GC 设置上。它们可用于关联 GC 具有 PerfTest 行为的活动,例如由于非常频繁而导致的异常低吞吐量 垃圾回收。这些指标是使用 or 标志启用的。-mjgc--metrics-jvm-gc
  • JVM 类装入器指标:已加载和未装入的类的数量。这些指标 使用 OR 标志启用。-mcl--metrics-class-loader
  • 处理器指标:指标报告 JVM 收集的 CPU 活动。 可以使用 or 标志启用它们。-mjp--metrics-processor
  • 04 导出HTML报告

追求完美的人去选择这个html报告吧,但是看起来的图片都是有点怪怪的。

rabbitmq-perf-test/html/README.md 在 main ·rabbitmq/rabbitmq-perf-test ·GitHub上


本文转载自: https://blog.csdn.net/qq_54957614/article/details/136666145
版权归原作者 @柘魔重@ 所有, 如有侵权,请联系我们删除。

“RabbitMQ压测简介”的评论:

还没有评论