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 ...
随机推荐
- Alpha阶段项目复审
队名 优点 缺点 名次 大马猴队 出现BUG修复时间短:针对初期用户需求的分析缺点能够快速更正,针对用户痛点实现了功能:开发的过程中削减了无用的功能,源代码管理比较好,更改能够及时提交,相关成员都有参 ...
- PostgreSQL误删操作怎么处理
方式一: PostgreSQL中没有Oracle的闪回机制,只有更加复杂的PITR恢复机制,这要求数据库有全量备份和增量备份,否则无法进行回滚. 方式二: 虽然PostgreSQL有延迟复制的技术,在 ...
- 移动端js模拟截屏生成图片并下载功能的实现方案
一.根据PM需求如下: 移动端wap 实现将二维码生成图片下载至用户手机相册保存 二.根据现有思路: 1.使用第三方工具html2canvas,将页面中指定范围的dom转换为canvas 2.随后使用 ...
- 关于CGI和FastCGI的理解
在搭建 LAMP/LNMP 服务器时,会经常遇到 PHP-FPM.FastCGI和CGI 这几个概念.如果对它们一知半解,很难搭建出高性能的服务器. 0.CGI的引入 在网站的整体架构中,Web Se ...
- linux下yum安装jdk1.8(rpm包)和tomcat-8.5
Java是目前可移植性较高的语言,相当火热,tomcat运行就需要Java语言环境 ========= 完美的分割线 ========= 0.java简介 1)tomcat运行需要对应的Java环境, ...
- 【opencv基础】pointPolygonTest
pointPolygonTest opencv函数 pointPolygonTest: C++: double pointPolygonTest(InputArray contour, Point2f ...
- iPhone/iPad被停用怎么办 3招轻松解锁
家中小孩玩电脑游戏,自己拿了iPad,随便输入密码,结果造成平板电脑无法使用,相信这是许多家长都将面对或是早已发生的事情.本文整理当iPhone或是iPad被停用时的处理方法. iPhone被停用 为 ...
- Java工具创建密钥库,用于Unity 3D打包、签名、发布
Java工具创建密钥库 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享.心创新! ...
- zoj 1108 FatMouse's Speed 基础dp
FatMouse's Speed Time Limit: 2 Seconds Memory Limit:65536 KB Special Judge FatMouse believe ...
- Springboot整合pagehelper分页
一.在pom中添加依赖 <dependency> <groupId>com.github.pagehelper</groupId> <artifactId&g ...