【问题标题】:RabbitMQ server performance issue - consuming messagesRabbitMQ 服务器性能问题 - 消耗消息
【发布时间】:2014-06-01 18:06:22
【问题描述】:

全部,

当有大量消息要消耗时,我在使用 RabbitMQ 时遇到了性能问题,例如280,000。从性能的角度来看,它似乎有起有落。从管理控制台获取的图表中的图表说明了这一点,其中消费者平均每秒大约 40 条消息,但随后跃升至每秒大约 120 条消息:

该模式将再次重复自身,它将再次回到 40 和 120 等 此外,如果我在 1 小时后运行相同的测试,则会出现相同的上下效果,但范围可能会有很大差异,例如每秒 140 到 400 条消息。

注意:消费者对消息不做任何事情 注意:单个消费者和 ConsumerMessagePrefetchCount = 500

关于性能,我有以下问题:

  1. 这种上下行为是正常的和预期的,还是应该稳定消息的消费速度?
  2. 我引用的数字是预期的还是应该更好/更差?

任何帮助表示赞赏 比利

【问题讨论】:

  • 你的服务器有多少内存?您是否尝试过更改 vm_memory_high_watermark ?
  • 它在具有 4 GB 或 RAM 的 VM 上运行。 VM 的唯一责任是 rabbitmq 服务器。高水位线为 1.5 GB,即 40%。内存目前达到 500MB 的最大值,因此我们离高水位线还很远。
  • 指定平台和rabbitmq版本和客户端语言/库
  • Ubuntu 12.04 64 位,RabbitMQ 3.2.4,Erlang R14B04
  • RabbitMQ 客户端库 3.2.4.0 rabbitmq.com/dotnet.html

标签: rabbitmq message-queue


【解决方案1】:

这种行为很正常,队列被设计成总是接近零消息。 280,000 是一个很高的数字,这意味着生产者比消费者更快,因此您必须增加消费者数量。

如果您有峰值负载,280,000 可能不是很高的数字,因为您有时间使用这些消息。 有很多技术可以提高性能,例如:

  1. 增加消费者线程,(你用多少线程来 消费消息?)
  2. 使用 noAck 发送消息
  3. PrefetchCount 很重要,高值不可能是正确的 解决方案。

消费者应该稳定,生产者也应该稳定,在负载高峰的情况下你需要更多的时间或更多的资源。

几个问题: 你的汇率是多少?

  1. 您是否使用同一队列中的消息?
  2. 您需要 ACK 吗?
  3. 为什么队列中有 280.000 条消息?只是测试还是 真实情况?

希望对你有用

正如 Alexis Richardson (RabbitMQ) 所说:

The easiest way to increase performance is to change what you are measuring ;-)

【讨论】:

    猜你喜欢
    • 2019-07-18
    • 1970-01-01
    • 2018-08-01
    • 2018-09-26
    • 2019-03-26
    • 1970-01-01
    • 2012-05-29
    • 2015-06-21
    • 1970-01-01
    相关资源
    最近更新 更多