一段时间后Rabbitmq无法管理

一段时间后Rabbitmq无法管理,rabbitmq,Rabbitmq,我有一个rabbitmq队列,发布到此队列的每个数据大小约为1MB。每秒有4或5个数据发布到此队列 消费者逐个消费每个数据,oneFetch=1。当我停止消费者服务时,30000条排队的消息已准备好消费。当我启动消费者时,其消费率为30/s+。现在还好 day light publisher中的Howewer从不停止发布,消费者可以处理队列。但在晚上出版商不再发送数据,这不是错误。这就是它应该是什么样子。第二天一亮,publisher开始每秒发布7个数据。这一次兔子队开始连续上升 第一个想法是消

我有一个rabbitmq队列,发布到此队列的每个数据大小约为1MB。每秒有4或5个数据发布到此队列

消费者逐个消费每个数据,oneFetch=1。当我停止消费者服务时,30000条排队的消息已准备好消费。当我启动消费者时,其消费率为30/s+。现在还好

day light publisher中的Howewer从不停止发布,消费者可以处理队列。但在晚上出版商不再发送数据,这不是错误。这就是它应该是什么样子。第二天一亮,publisher开始每秒发布7个数据。这一次兔子队开始连续上升

第一个想法是消费者无法处理数据。但它每秒可以消耗30/s以上的数据

我知道消费速度取决于消费者

但是

我认为兔子有某种机制,经过一段时间后,它会降低消费者的速度。可能是锁机制,可能是内部日志。我找不到任何解决办法。请帮忙

此图显示了消费者速度的极限

多亏了卢茨·霍恩


消费者是如何实现的?它使用推式还是拉式方法?它每秒仅消耗3.8条消息。编辑:屏幕截图显示消费者利用率为0%。这意味着RabbitMQ必须始终等待使用者能够处理下一条消息。RabbitMQ永远不能将已发布的消息推送到使用者。请参阅–卢茨号角


消费者是如何实现的?它使用推式还是拉式方法?它每秒仅消耗3.8条消息。编辑:屏幕截图显示消费者利用率为0%。这意味着RabbitMQ必须始终等待使用者能够处理下一条消息。RabbitMQ永远不能将已发布的消息推送到使用者。请参见它使用basic.consume函数。这是拉进近吗?。fetch数据变量不是definedit,我知道默认情况下它是1。问题是消费者每秒可以消耗30/s以上的数据。排队工作了24小时。8个小时以来,publisher从未停止发布。publisher有11个小时没有发送任何数据。早上,publisher以7个数据/秒开始。我将尝试捕获30/s以上的消费速度并再次发送。您如何知道消费者每秒处理30条消息?它现在能应付这个利率吗?这很令人困惑。当data30000队列就绪时,使用者消耗30/s。当出版商不闲着的时候,兔子就没事了。但publisher对我来说空闲了10小时,在空闲时间消耗速度之后启动流。我将再次测试并发送30/s速度的屏幕截图。我以前没有检查消费者利用率。我从未增加预取计数。我再试一次。谢谢你的回答@LutzHorn。博客解释了大部分事情。