2012-05-03 78 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)