rabbitmq压力测试结果

测试目标

    性能相关情况

    集群稳定性

    集群的高用性

机器情况

rabbitmq集群情况

3个节点,节点服务器均为4核8G

每个节点均为磁盘节点

使用镜像队列

压测机器情况

    4核8G

测试工具

rabbitmq-perf-test

PerfTest是一个基于Java客户端的吞吐量测试工具,可以将其配置为模拟基本工作负载和更高级的工作负载。PerfTest还有一些额外的工具,可以生成输出的HTML图形。

RabbitMQ集群可能受到多种因素的限制,从基础架构级别的约束(例如,网络带宽)到RabbitMQ配置和拓扑,再到发布和使用的应用程序。PerfTest可以演示节点或节点集群的基准性能。

参考文档

https://rabbitmq.github.io/rabbitmq-perf-test/stable/htmlsingle/#basic-usage

https://github.com/rabbitmq/rabbitmq-perf-test/blob/master/html/README.md

测试步骤

跑统计:bin/runjava com.rabbitmq.perf.PerfTestMulti html/test1/spec.js html/test1/result.js

起服务看结果:bin/runjava com.rabbitmq.perf.WebServer  服务器IP地址:8080/test1/result.html

测试总结

一开始进行单场景脚本测试时,发送速率也基本维持在35k/s左右,无法往上涨;开启多场景多脚本同步进行施加压力之后,发送速率也无法上升,反而一直在降,同时压测机器的负载也很高,性能跟不上。调整升级压测机器后,当我们多场景多脚本进行施压时,发送速率依旧变化不大,这是因为rabbitmq有相应的流控机制:

服务端默认配置是当内存使用达到40%,磁盘空闲空间小于50M,即启动内存报警,磁盘报警;报警后服务端触发流控(flowcontrol)机制。

一般地,当发布端发送消息速度快于订阅端消费消息的速度时,队列中堆积了大量的消息,导致报警,就会触发流控机制。

触发流控机制后,RabbitMQ服务端接收发布来的消息会变慢,使得进入队列的消息减少

与此同时RabbitMQ服务端的消息推送也会受到极大的影响,测试发现,服务端推送消息的频率会大幅下降,等待下一次推送的时间,有时等1分钟,有时5分钟,甚至30分钟。

一旦触发流控,将导致RabbitMQ服务端性能恶化,推送消息也会变得非常缓慢;

调整测试脚本,增大生产者的并发数量到1000,5个队列,50个消费者,此时rabbitmq节点1的负载被打满;然后依次不停降低生产者和消费者的并发数量,直至生产者与消费者均只为30的场景,发现rabbitmq节点1服务器的cpu负载均很高,此时发现rabbitmq节点1服务器的cpu资源几乎都被四个线程也即rabbitmq的调取器线程占用,通过调整rabbitmq的调度器线程数量,我们发现发现速率以及服务器cpu负载有一定的变化,rabbitmq 单节点的瓶颈在于其调度器的线程数:

4个线程全打开时,发送速率限制在了35k/s,此时空闲的cpu最大不到10%

打开3个调度器线程时,发送速率限制在25k/s,此时空闲的cpu最大为25%

打开2个调度器线程时,发送速率限制在20k/s,此时空闲的cpu最大为30%

因此,我们可以通过以下措施来提升rabbitmq 的服务性能:

我们应当尽量避免触发rabbitmq的流控机制,要做好数据设计,使得发送速率和接收速率保持平衡,而不至于引起服务器堆积大量消息,进而引发流控。通过增加服务器集群节点,增加消费者,来避免流控发生,治标不治本,而且成本高。

如果当前的性能达不到业务要求时,可以升级服务器,将服务器由4核升级到8核,增加rabbitmq的调度器线程数量,来提升性能。

基准测试部分场景结果

1个节点,节点内存为3G,只发布不消费,1个队列,10个消费者,生产速率上限约为60k/s,发送速率为0时是触发了rabbitmq的流控机制

1个节点,节点内存为3G,只发布不消费,1个队列,15个生产者,上限约为70k/s,发送速率为0时是触发了rabbitmq的流控机制

3、1个节点,节点内存为3G,只发布不消费,1个队列,30个生产者,上限约为60k/s,发送速率为0时是触发了rabbitmq的流控机制

1个节点,节点内存为3G,只发布不消费,1个队列,60个生产者,上限约为60k/s,发送速率为0时是触发了rabbitmq的流控机制

1个节点,节点内存为4G,只发布不消费,1个队列,30个生产者,上限约为70k/s,发送速率为0时是触发了rabbitmq的流控机制

1个节点,节点内存为4G,生产者大于消费者,1个队列,30个生产者,10个消费者,发送速率上限约为50k/s,消费速率上限约为25k/s

1个节点,节点内存为4G,生产者大于消费者,1个队列,30个生产者,15个消费者,发送速率上限约为60k/s,消费速率上限约为35k/s

1个节点,节点内存为4G,生产者大于消费者,1个队列,30个生产者,30个消费者,发送速率上限约为60k/s,消费速率上限约为35k/s

1个节点,节点内存为4G,生产者大于消费者,2个队列,30个生产者,30个消费者,发送速率上限约为60k/s,消费速率上限约为45k/s

1个节点,节点内存为4G,生产者大于消费者,1个队列,5个消费者,生产者从[1,5,10,15]逐步增加,消息体的大小由[0, 1000, 5000, 10000, 50000]逐步增加,下图的rate为发送速率

1个节点,节点内存为4G,生产者大于消费者,3个队列,5个消费者,生产者从[1,5,10,15]逐步增加,消息量由[0, 1000, 5000, 10000, 50000]逐步增加,消费速率约等于三个队列加总的发送速率

过程中队列有积压

1个节点,节点内存为4G,生产者大于消费者,1个队列,生产者和消费者数量均从[1, 5, 10, 15, 20]逐步增加,前台查看发送和接收速率基本持平,大部分在25k/s-30k/s

11、1个节点,节点内存为4G,生产者大于消费者,4个队列,生产者和消费者数量均从[1, 5, 10,15]逐步增加

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,198评论 6 514
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,334评论 3 398
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,643评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,495评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,502评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,156评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,743评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,659评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,200评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,282评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,424评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,107评论 5 349
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,789评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,264评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,390评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,798评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,435评论 2 359

推荐阅读更多精彩内容

  • RabbitMQ 简介 MQ 消息队列,上承生产者,下接消费者。从生产者侧获取消息,然后将消息转发给消费者。由此可...
    2205阅读 3,505评论 1 11
  • RabbitMQ是采用Erlang语言实现AMQP(Advanced Message Queuing Protoc...
    陈晨_软件五千言阅读 2,062评论 0 5
  • 在 IM 这种讲究高并发、高消息吞吐的互联网场景下,MQ 消息中间件是个很重要的基础设施,它在 IM 系统的服务端...
    Java大生阅读 893评论 0 1
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,524评论 16 22
  • 创业是很多人的梦想,多少人为了理想和不甘选择了创业来实现自我价值,我就是其中一个。 创业后,我由女人变成了超人,什...
    亦宝宝阅读 1,816评论 4 1