首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用RabbitMQ最大限度提高吞吐量

利用RabbitMQ最大限度提高吞吐量
EN

Stack Overflow用户
提问于 2012-04-05 22:09:44
回答 3查看 35.3K关注 0票数 34

在我们的项目中,我们希望使用“任务队列”模式中的RabbitMQ来传递数据。

在生产者端,我们构建了几个TCP服务器(在node.js中)来接收高并发数据并将其发送到MQ,而无需执行任何操作。

在使用者端,我们使用JAVA客户端从MQ获取任务数据,处理它,然后确认。

所以问题是:为了获得最大的消息传递吞吐量/性能(例如,400,000 msg/秒),多少个队列是最佳的?更多的队列是否意味着更好的吞吐量/性能?还有什么是我应该注意的吗?在这样的场景中使用RabbitMQ有什么已知的最佳实践指南吗?

任何意见都是非常感谢的!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-06 08:17:07

为了在RabbitMQ中获得最佳性能,请遵循其创建者的建议。在RabbitMQ blog中:

当队列为空时,

RabbitMQ的队列速度最快。当队列是空的,并且它让使用者准备好接收消息时,一旦队列接收到消息,它就会直接发送给使用者。在持久队列中的持久消息的情况下,是的,它也将进入磁盘,但这是以异步方式完成的,并且缓冲很重。主要的一点是,需要做的记账工作很少,修改的数据结构很少,需要分配的额外内存也很少。

如果你真的想深入研究RabbitMQ队列的性能,他们的这个other blog entry会更深入地研究数据。

票数 36
EN

Stack Overflow用户

发布于 2012-08-30 09:44:11

根据我曾经从rabbitmq-讨论邮件组得到的回复,你还可以尝试其他方法来增加吞吐量和减少延迟:

  • 使用更大的预取计数。较小的值会影响性能。
  • 主题交换比直接或扇出交换慢。
  • 确保队列保持较短。较长的队列会带来更多的处理开销。
  • 如果你关心延迟和消息速率,那么就使用较小的消息。使用有效的格式(例如避免XML)或使用有助于performance.
  • Avoid事务和持久性的HiPE压缩payload.
  • Experiment。也要避免以立即或强制模式发布。避免HA。集群也会影响performance.
  • You在多核系统上实现更好的吞吐量,如果您有多个队列,并且consumers.
  • Use至少为2.8.1,它引入了流量控制。确保内存和磁盘空间警报永远不会对您的操作系统和网络堆栈造成很小的性能影响( trigger.
  • Virtualisation penalty.
  • Tune your OS and network stack )。确保您提供了足够的RAM。提供快速内核和内存。
票数 35
EN

Stack Overflow用户

发布于 2014-11-04 21:59:32

您将通过更大的预取计数来增加吞吐量,同时确认来自消费者的多条消息(而不是为每条消息发送ACK )。

但是,当然,启用多重标志的确认(http://www.rabbitmq.com/amqp-0-9-1-reference.html#basic.ack)需要在消费者应用程序(http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2013-August/029600.html)上使用额外的逻辑。您必须保留从代理传递的消息的传递标记列表、它们的状态(无论您的应用程序是否已处理它们),并在处理完传递标记小于或等于NDTAG的所有消息时,每隔N个传递标记(NDTAG)确认一次。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10030227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档