Rabbit测试及其方案
转载:https://www.2cto.com/kf/201609/548190.html
个消息没有回应,则MQ不会再往消费者A中发消息,直到收到消息确认后才会再次发送。
Ack:消息确认。
:启动一个生产者,无消费者。

条消息,磁盘写入是6250/s
当消息的堆积量达到40W以上时,每秒进入队列的速率就会降到4500~5000/s之间
:启动三个生产者,无消费者。

条消息,磁盘写入是6500/s
:启动10个生产者,无消费者

条消息,磁盘写入是7300/s
:启动20个生产者,无消费者

个生成者是8500,经过反复测试最终发现20~25个生产者效率最高。
个消费者,Qos为0,默认ack接收到消息马上返回。


测试结果:每秒消费8000Qps
:启动无生产者,1个消费者,Qos为1,默认应答接收到消息马上返回。


测试结果:每秒消费310Qps;
:启动无生产者,1个消费者,Qos为1,默认不应答接收到消息马上返回


测试结果:每秒消费11500Qps;
:启动无生产者,一个消费者,Qos为10,默认ack接收到消息马上返回。


:启动1个生产者,1个消费者,Qos为10,默认Ack,接收到消息后马上返回。

测试结果:生成4000Qps/s消费1000Qps/s
:启动1个生成者,1个消费者,Qos为10,默认Ack,接收到消息休眠10ms

测试结果:生产4500Qps/s消费10Qps/s
:启动1个生产者,1个连接,10个消费者,Qos为100,默认Ack,接收到消息休眠10ms

测试结果:生产5000qps/s消费500qps/s
这说明一味的增加channel开启consumer应该是有瓶颈的,随着consumer的增加,消费效率应该也不会有太大的增加,接着测试
:启动一个生产者,1个连接,30个消费者,Qos为100,默认Ack,接收到消息休眠10ms

测试结果:生产4500qps/s消费450qps/s
左右,感觉要到瓶颈了.后面我尝试过consumer_size=50,也是这个值,直到consumer_size=17的时候就是500/s,再增加consumer也不会增加效率了.
从数据上来看感觉是一个连接里面channel有一个上限值,再多也处理不完了,那可以考虑尝试增加connection来试试是否能够增加消费能力
:启动1个生产者,3个连接,每个连接里面创建17个消费者,Qos为100,默认Ack,接收到消息休眠10ms,用来模拟业务处理时间

测试结果:生产4320qps/s消费1500qps/s
:启动一个生产者,10个连接,每个连接里面创建17个消费者,Qos为100,默认Ack,接收到消息休眠10ms,用来模拟业务处理时间
总结
通过以上的测试,我们基本上得出以下几个结论:
1.生产者生产消息过快,无论是否有消费者,都会触发流控,不同的是流控强度随消费者个数加强.
2.一旦有消费者连接,就会对生产者的消息生产效率产生影响(在触发流控之后)
3.在每个连接里面在创建相应数量的consumer,可以增加消费能力,但是也是有上限的,我的
测试中上限是17
4.创建多个连接,并且每个每个连接里面consumer设置到上限数量,可以进一步增加消费能力
5.在消息堆积的情况下,消费者数量与生产者的生产效率成反比
6.在没有消息堆积的情况下,设置得当的话,基本上可以做到生产与消费同步(测试的最大值为13000+/s,加大连接数可能还会提高)
Rabbit测试及其方案的更多相关文章
- 【Android端】【日志收集上报SDK相关内容测试的方案梳理总结】
测试方案: 主要从几个方面关注,功能 性能 服务端策略(目前所有的这些上报收集等都会通过开关的精细化,通过接口方式将信息返回给APP端,APP端根据相关内容进行上报,因此基于此的上报机制及收集机制都需 ...
- Spring实现类私有方法测试通用方案
现实的业务场景中,可能需要对Spring的实现类的私有方法进行测试. 场景描述: 比如XXXService里有 两个函数a.函数b. 而实现类XXXServiceImpl中实现了函数a.函数b,还包含 ...
- 测试WWW方案(反向代理,负载均衡,HTTP加速缓存)
大约图如下: NGINX FRONT(80)--->VARNISH(8080)---->LNMP BACKEND 1(80) |--->LNMP BACKEND 2(80) 主要是前 ...
- 【腾讯优测干货分享】如何降低App的待机内存(二)——规范测试流程及常见问题
本文来自于腾讯优测公众号(wxutest),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/806TiugiSJvFI7fH6eVA5w 作者:腾讯TMQ专项测 ...
- SQL Server获取下一个编码字符串的实现方案分割和进位
我在前一种解决方案SQL Server获取下一个编码字符实现和后一种解决方案SQL Server获取下一个编码字符实现继续重构与增强两篇博文中均提供了一种解决编码的方案,考虑良久对比以上两种方 ...
- Docker 容器测试全探索
导读 当我们构建好Docker镜像并利用多套容器共同组合成应用程序,建立起持续交付通道,了解了如何将新创建的镜像纳入到生产或者测试环境当中之后,新的问题来了——我们该如何测试自己的Docker容器?测 ...
- 覆盖率测试工具gcov的前端工具_LCOV
http://my.oschina.net/alphajay/blog/33725 1.Gcov是进行代码运行的覆盖率统计的工具,它随着gcc的发布一起发布的,它的使用也很简单,需要在编译和链接的时候 ...
- Android IOS WebRTC 音视频开发总结(五七)-- 网络传输上的一种QoS方案
本文主要介绍一种QoS的解决方案,文章来自博客园RTC.Blacker,欢迎关注微信公众号blacker,更多详见www.rtc.help QoS出现的背景: 而当网络发生拥塞的时候,所有的数据流都有 ...
- javascript把IP地址转为数值几种方案,来挑战一下效率吧
先看看什么是IP地址: IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节).IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~25 ...
随机推荐
- webbrowser 静音(刷新、点击网页的声音)(包括flash静音)
public enum INTERNETFEATURELIST { FEATURE_OBJECT_CACHING = 0, FEATURE_ZONE_ELEVATION = 1, FEATURE_MI ...
- 51nod1615
题解: 首先,当1+2+...+n=x时,答案就是n 如果1+2+...+n不会等于x,那么找一个最小的n,让1+2+....+n>x并且(1+2+.....+n-x)%2=0 代码: #inc ...
- python 抓取request信息,各种cookie,user-agent类的信息,只调试到http可以抓取,https貌似不行。
import pcap # 安装的是pypcap,本博客有安装方法,不过也比较乱,试试吧.import dpktimport socketimport datetime def sniffer(str ...
- 给tabBarItem加点击效果动画
获取到tabBarItem,添加喜欢的动画 .h文件 @interface JGTabBarController () //记录上一次点击tabbar @property (nonatomic, as ...
- Axure使用笔记1:如何去除IE中每次“已限制网页运行脚本或ActiveX控件”
每次在Axure中画原型预览的时候,IE每次都有 这个比较烦,在Internent做如下设置,即可不再烦恼 看到没,给允许活动内容在我的计算机上的文件中运行打上勾
- 第二篇 makefile的基本结构
makefile用于定义并描述源文件之间的依赖关系,用于说明如何编译各个源文件并生成最终的可执行文件,规则是makefile中的基本组成部分. 一个最基本的依赖规则如下所示: targets代表这个规 ...
- OpenCV-bwLabel-实现图像连通组件标记与分析
OpenCV实现图像连通组件标记与分析- matlab bwLabel; code: #include <opencv2/opencv.hpp> #include <iostream ...
- HDU 1010:Tempter of the Bone(DFS+奇偶剪枝+回溯)
Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- 大家一起做训练 第一场 B Tournament
题目来源:CodeForce #27 B 有n个人比赛,两两之间都有一场比赛,一共 n * (n - 1) / 2 场比赛.每场比赛的记录方式是 a b,表示在a和b的比赛中,a胜出,b失败. 经过研 ...
- 【maven】使用import scope解决maven继承(单)问题
测试环境 maven 3.3.9 想必大家在做SpringBoot应用的时候,都会有如下代码: <parent> <groupId>org.springframework.bo ...