当前位置: 首页 > news >正文

rabbitmq单机安装及性能测试

RabbitMQ单机安装及性能测试

本文使用CentOS7.9安装RabbitMQ单机环境,并进行性能测试。

1. 安装RabbitMQ

RabbitMQ依赖Erlang,版本配套关系参考官网:https://www.rabbitmq.com/docs/which-erlang。

本文安装RabbitMQ3.8.21,Erlang版本要求为23.2~24.2。

# 卸载通过yum源安装的erlang,版本不满足
$ sudo yum remove erlang-*
# 安装erlang
$ sudo yum install -y make gcc gcc-c++ m4 openssl openssl-devel ncurses-devel unixODBC unixODBC-devel java java-devel
$ sudo mkdir /usr/local/erlang
$ wget https://github.com/erlang/otp/releases/download/OTP-23.3.4.20/otp_src_23.3.4.20.tar.gz
$ tar xf otp_src_23.3.4.20.tar.gz
$ cd otp_src_23.3.4.20/
$ sudo ./configure --prefix=/usr/local/erlang
$ sudo make && sudo make install
# 配置环境变量
$ sudo vim /etc/profile
#########   添加如下内容   ###############
PATH=$PATH:/usr/local/erlang/bin
$ sudo source /etc/profile
# 查看erlang版本
$ sudo erl -version
Erlang (SMP,ASYNC_THREADS,HIPE) (BEAM) emulator version 11.2.2.18# 安装rabbitmq-server
$ wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.21/rabbitmq-server-generic-unix-3.8.21.tar.xz
$ tar xf rabbitmq-server-generic-unix-3.8.21.tar.xz
$ sudo mv rabbitmq_server-3.8.21/  /usr/local/# 添加环境变量
$ sudo vim /etc/profile
export RABBITMQ_HOME=/usr/local/rabbitmq_server-3.8.21/sbin
export PATH=$RABBITMQ_HOME:$PATH# 重载一下环境变量
$ sudo source /etc/profile# 添加web管理插件
$ sudo rabbitmq-plugins enable rabbitmq_management# 找到rabbitmq.conf.example和advanced.config.example文件,将.example去掉,拷贝到/usr/local/rabbitmq_server-3.8.21/etc/rabbitmq目录下。
# 配置文件实例:https://www.rabbitmq.com/docs/configure#config-file
$ mv rabbitmq.conf.example rabbitmq.conf
$ mv advanced.config.example advanced.config# 修改rabbitmq.conf文件,取消注释如下两行(91、97行),并将geust从loopback_users中移除。
$ sudo vim rabbitmq.conf
{loopback_users, []},
loopback_users.guest = false# 后台启动
$ sudo rabbitmq-server -detached# 停止
$ sudo rabbitmqctl stop

2. PerfTest测试Rabbitmq性能

2.1 PerfTest安装

PerfTest也是从Bintray和GitHub发布的二进制版本库中分发的。如果需要将它作为库,也可以在Maven Central上使用。

参考:

官网:https://perftest.rabbitmq.com/

GitHub:https://github.com/rabbitmq/rabbitmq-perf-test/releases

Maven Central: https://central.sonatype.com/artifact/com.rabbitmq/perf-test

# 下载解压
$ wget https://github.com/rabbitmq/rabbitmq-perf-test/releases/download/v2.20.0/rabbitmq-perf-test-2.20.0-bin.zip
$ unzip rabbitmq-perf-test-2.20.0-bin.zip
$ cd rabbitmq-perf-test-2.20.0/bin/
# 帮助文档
$ ./runjava com.rabbitmq.perf.PerfTest --help
usage: <program>-?,--help                           show usage-A,--multi-ack-every <arg>          multi ack every-a,--autoack                        auto ack-ad,--auto-delete <arg>             should the queue be auto-deleted,default is true-B,--body <arg>                     comma-separated list of files to usein message bodies-b,--heartbeat <arg>                heartbeat interval-C,--pmessages <arg>                producer message count-c,--confirm <arg>                  max unconfirmed publishes-ct,--confirm-timeout <arg>         waiting timeout for unconfirmedpublishes before failing (in seconds)-D,--cmessages <arg>                consumer message count-d,--id <arg>                       test ID-e,--exchange <arg>                 exchange name-f,--flag <arg>                     message flag-H,--uris <arg>                     connection URIs (separated by commas)-h,--uri <arg>                      connection URI-i,--interval <arg>                 sampling interval in seconds-K,--random-routing-key             use random routing key per message-k,--routing-key <arg>              routing key-L,--consumer-latency <arg>         consumer latency in microseconds-l,--legacy-metrics                 display legacy metrics (min/avg/maxlatency)-M,--framemax <arg>                 frame max-m,--ptxsize <arg>                  producer tx size-ms,--use-millis                    should latency be collected inmilliseconds, default is false. Set to true if producers are consumers runon different machines.-n,--ctxsize <arg>                  consumer tx size-o,--output-file <arg>              output file for timing results-p,--predeclared                    allow use of predeclared objects-Q,--global-qos <arg>               channel prefetch count-q,--qos <arg>                      consumer prefetch count-qa,--queue-args <arg>              queue arguments as key/pair values,separated by commas-R,--consumer-rate <arg>            consumer rate limit-r,--rate <arg>                     producer rate limit-S,--slow-start                     start consumers slowly (1 sec delaybetween each)-s,--size <arg>                     message size in bytes-sb,--skip-binding-queues           don't bind queues to the exchange-T,--body-content-type <arg>        body content-type-t,--type <arg>                     exchange type-u,--queue <arg>                    queue name-udsc,--use-default-ssl-context     use JVM default SSL context-X,--producer-channel-count <arg>   channels per producer-x,--producers <arg>                producer count-Y,--consumer-channel-count <arg>   channels per consumer-y,--consumers <arg>                consumer count-z,--time <arg>                     run duration in seconds (unlimited bydefault)

2.2 测试rabbitmq性能

# 使用2个发布者和4个消费者,消费者自动确认。测试10s
$ ./runjava com.rabbitmq.perf.PerfTest -x 2 -y 4 -u "throughput-test-2" -a --id "test 2" -z 10
id: test 2, starting consumer #0
id: test 2, starting consumer #0, channel #0
id: test 2, starting consumer #1
id: test 2, starting consumer #1, channel #0
id: test 2, starting consumer #2
id: test 2, starting consumer #2, channel #0
id: test 2, starting consumer #3
id: test 2, starting consumer #3, channel #0
id: test 2, starting producer #0
id: test 2, starting producer #0, channel #0
id: test 2, starting producer #1
id: test 2, starting producer #1, channel #0
id: test 2, time 1.003 s, sent: 127999 msg/s, received: 15782 msg/s, min/median/75th/95th/99th consumer latency: 5713/307891/402582/528289/582712 µs
id: test 2, time 2.001 s, sent: 131113 msg/s, received: 26712 msg/s, min/median/75th/95th/99th consumer latency: 492458/927258/1076558/1200196/1224838 µs
id: test 2, time 3.002 s, sent: 70270 msg/s, received: 27921 msg/s, min/median/75th/95th/99th consumer latency: 1231947/1636103/1762087/1911254/1961337 µs
id: test 2, time 4.004 s, sent: 65868 msg/s, received: 32514 msg/s, min/median/75th/95th/99th consumer latency: 1871274/2289855/2447511/2573695/2638878 µs
id: test 2, time 5.010 s, sent: 71051 msg/s, received: 47652 msg/s, min/median/75th/95th/99th consumer latency: 2558754/2876891/2982484/3254060/3317619 µs
id: test 2, time 6.002 s, sent: 59422 msg/s, received: 61646 msg/s, min/median/75th/95th/99th consumer latency: 2759697/3160876/3333301/3550598/3577079 µs
id: test 2, time 7.002 s, sent: 51860 msg/s, received: 62923 msg/s, min/median/75th/95th/99th consumer latency: 2821628/3221174/3346806/3479463/3500692 µs
id: test 2, time 8.001 s, sent: 69568 msg/s, received: 64028 msg/s, min/median/75th/95th/99th consumer latency: 2815461/3220554/3359531/3509414/3540637 µs
id: test 2, time 9.001 s, sent: 60874 msg/s, received: 56448 msg/s, min/median/75th/95th/99th consumer latency: 2810135/3187379/3422998/3547960/3569557 µs
id: test 2, time 10.006 s, sent: 52246 msg/s, received: 58175 msg/s, min/median/75th/95th/99th consumer latency: 2871297/3260717/3463882/3582327/3608431 µs
id: test 2, time 11.001 s, sent: 2.0 msg/s, received: 60551 msg/s, min/median/75th/95th/99th consumer latency: 2933013/3275629/3448953/3585931/3630662 µs
id: test 2, time 12.001 s, sent: 0 msg/s, received: 70372 msg/s, min/median/75th/95th/99th consumer latency: 2767204/3282635/3474078/3678657/3719987 µs
id: test 2, time 13.001 s, sent: 0 msg/s, received: 65454 msg/s, min/median/75th/95th/99th consumer latency: 2552693/3090484/3276141/3544581/3585066 µs
test stopped (Reached time limit)
id: test 2, sending rate avg: 58506 msg/s
id: test 2, receiving rate avg: 49985 msg/s
id: test 2, consumer latency min/median/75th/95th/99th 14918/3156722/3342902/3541320/3615540 µs
$ bin/runjava com.rabbitmq.perf.PerfTest -x 2 -y 4 -u "throughput-test-2" -a --id "test 2"# 将消费者切换到手动确认:
$ ./runjava com.rabbitmq.perf.PerfTest -x 1 -y 2 -u "throughput-test-3" --id "test 3"# 修改将消息大小从默认(12字节)更改为4 kB:
$ ./runjava com.rabbitmq.perf.PerfTest -x 1 -y 2 -u "throughput-test-4" --id "test 4" -s 4000# 使用持久队列和持久消息:
$ ./runjava com.rabbitmq.perf.PerfTest -x 1 -y 2 -u "throughput-test-5" --id "test-5" -f persistent# 队列数400,生产者200,消费者200,消息大小12bytes(默认),消息自动确认,持久化,持续生产消费5分钟。建议测试客户端和被测试机器分开部署。
$ ./runjava com.rabbitmq.perf.PerfTest -x 200 -y 200 -u "max-throughput-test" -s 12 -a --id "test 2" -z 300 -f persistent
id: test 2, sending rate avg: 116797 msg/s
id: test 2, receiving rate avg: 29674 msg/s
id: test 2, consumer latency min/median/75th/95th/99th 7504371/104831283/114120030/121894266/124635729 µs

相关文章:

  • NAND闪存市场彻底复苏
  • hive split 特殊用法
  • 如何在WordPress中上传多种安装包文件
  • 第一章 基本指令
  • Qt 信号与槽机制概述
  • 早期发现,健康生活!第三届ZAODX世界肿瘤早筛大会圆满落幕!
  • JAVAEE值之网络原理(1)_用户数据报协议(UDP)、概念、特点、结构、代码实例
  • 2024-6-14(沉默Nginx)
  • 30.保存游戏配置到文件
  • 【数据结构与算法 刷题系列】判断链表是否有环(图文详解)
  • ripro主题如何使用memcached来加速
  • 【多线程实例】
  • Google Earth Engine(GEE)——计算闪闪红星的ndvi的值和直方图(时序分析)
  • 12.1 Go 测试的概念
  • 游戏心理学Day17
  • CSS 专业技巧
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • node.js
  • windows下mongoDB的环境配置
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 前端js -- this指向总结。
  • 嵌入式文件系统
  • 入口文件开始,分析Vue源码实现
  • 写代码的正确姿势
  • 用 Swift 编写面向协议的视图
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • Spring第一个helloWorld
  • ​secrets --- 生成管理密码的安全随机数​
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #{}和${}的区别是什么 -- java面试
  • #70结构体案例1(导师,学生,成绩)
  • #进阶:轻量级ORM框架Dapper的使用教程与原理详解
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (function(){})()的分步解析
  • (Git) gitignore基础使用
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (精确度,召回率,真阳性,假阳性)ACC、敏感性、特异性等 ROC指标
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • (转载)CentOS查看系统信息|CentOS查看命令
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .net/c# memcached 获取所有缓存键(keys)
  • .net6Api后台+uniapp导出Excel
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .net开发日常笔记(持续更新)
  • @AliasFor注解
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
  • [12] 使用 CUDA 进行图像处理