【问题标题】:High CPU consumption when deleting RabbitMQ Queue?删除 RabbitMQ 队列时 CPU 消耗高?
【发布时间】:2012-06-14 22:30:21
【问题描述】:

我在 RabbitMQ 上遇到问题,每当我删除队列时,CPU 就会上升。我删除兔子队列的次数越多,CPU 就会逐渐增加。在我看来,在某些时候有一些对象没有结束。顺便说一句,我的代码没有循环,只是普通的 QueueDelete。 我正在使用 RabbitMQ .net 库。

如果您遇到此类问题,请告诉我您是如何解决的。或者任何建议都可以。

最好的问候,

【问题讨论】:

  • 高 CPU 本身不是问题。你有一个CPU,它是用来使用的,对吧?现在,问题是;它是否会导致您的应用程序出现明显问题
  • 是的。这真的是一件大事。我的 i3 处理器上的 CPU 提升了 100%。消耗它的只是我的应用程序。我的应用程序创建和删除兔子队列。 5 次删除队列就足以让它达到 70-80%。
  • 好的,那么,是时候打破分析器了。
  • 我做了一个分析,并且来自 RabbitMQ.Util.SharedQueue.Dequeue() 的 [clr.dll] 很热
  • 这会很困难,因为我假设你没有这个库的源代码。您可以联系他们的支持团队吗?

标签: c# .net rabbitmq


【解决方案1】:

我通过检查渠道和消费者是否仍在运行来解决此问题。

所以在我的消费方法中,在我收到消息之前,我正在检查通道是否仍然打开,或者消费者标签是否仍在运行。这样我就知道如果返回 true 该怎么办。我之前的代码发生的事情是我没有检查并且没有处理异常。所以每次我删除一个频道时,它都会在消耗时抛出一个异常。

谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-20
    • 2018-10-22
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-04
    • 2011-10-08
    相关资源
    最近更新 更多