2012-05-03 44 views
6

我连接到RabbitMQ的服务器时间阻塞状态,我不能发布新的消息 我的连接显示我有6 GB可用和磁盘空间的RAM也大约8GBRabbitMQ连接处于阻塞状态?

如何在RabbitMQ的配置磁盘空间限制

+0

你能提供更多信息吗?也许在浏览器中编写管理GUI的快照。 – robthewolf

+0

代码明智,相关修复和讨论: http://stackoverflow.com/questions/14386392/how-to-detect-alarm-based-blocking-rabbitmq-producer/17104037#17104037 – hellojava

回答

2

默认情况下,[disk_free_limit](来源:[1])必须超过可用RAM的1.0倍。在你的情况中,这是真的,所以你可能想要检查什么阻止了流程。为此,请阅读[rabbitmqctl man](来源:[2]),然后运行last_blocked_by命令。这应该告诉你阻止的原因。

假设它是内存(并且您以某种方式没有正确计算您的可用磁盘空间),要更改disk_free_limit,请阅读[配置rabbitmq.config](来源:[1]),然后打开rabbitmq.config文件并在配置声明中添加以下行:{rabbit, [{disk_free_limit, {mem_relative, 0.1}}]}。我的rabbitmq.config文件如下所示:

[ 
{rabbit, [{disk_free_limit, {mem_relative, 0.1}}]} 
]. 

具体的数字取决于您当然。

来源

  1. http://www.rabbitmq.com/configure.html#configuration-file
  2. http://www.rabbitmq.com/man/rabbitmqctl.1.man.html
7

我得到了同样的问题。看起来像的RabbitMQ服务器使用更多的内存比阈

http://www.rabbitmq.com/memory.html

我跑以下命令解除封锁这些连接:

rabbitmqctl set_vm_memory_high_watermark 0.6

(默认值是0.4)