2013-03-01 78 views
2

我們在我們的應用程序使用RabbitMQ的,兩個小時前,我們的應用程序服務器的一個被阻塞時,嘗試連接到RabbitMQ的,檢查的RabbitMQ服務器後,我們發現一個節點的內存過水印,幾分鐘後,這個節點關閉。重新啓動該節點之後,整個集羣薩姆斯做工精細,但我注意到有很多阻斷連接並阻斷狀態從web管理,但在所有的節點都使用rabbitmqctl list_connections pid name peer_address state表明存在阻塞/阻塞......所以這真的讓我沒有任何聯繫迷惑:RabbitMQ的連接阻塞,但記憶是打擊水印

  1. 後一個節點集羣整體上的水印,但其他節點是 做工精細,我的應用程序無法連接到RabbitMQ的集羣? PS: 我們使用spring.amqp &彈簧兔子版本1.1.0.RELEASE
  2. 節點將拒絕是爲了什麼原因,當在水印?
  3. 爲什麼重啓節點之後,仍有阻塞連接,但以rabbitmqctl他們 都處於運行狀態?

這裏是從我的RabbitMQ服務器的一些日誌:

=INFO REPORT==== 1-Mar-2013::19:36:21 === 
vm_memory_high_watermark clear. Memory used:1656590680 allowed:1658778419 

=INFO REPORT==== 1-Mar-2013::19:36:21 === 
alarm_handler: {clear,{resource_limit,memory,[email protected]}} 

當我嘗試關閉從web管理封鎖連接,這是不言而喻的錯誤:

=INFO REPORT==== 1-Mar-2013::20:55:24 === 
Closing connection <0.17197.115> because "Closed via management plugin" 

=ERROR REPORT==== 1-Mar-2013::20:55:24 === 
webmachine error: path="/api/connections/10.64.13.200%3A45891%20-%3E%2010.64.12.226%3A5672" 
{throw, 
{error,{not_a_connection_pid,<0.17197.115>}}, 
[{rabbit_networking,close_connection,2, 
    [{file,"src/rabbit_networking.erl"},{line,317}]}, 
{rabbit_mgmt_wm_connection,delete_resource,2, 
    [{file,"rabbitmq-management/src/rabbit_mgmt_wm_connection.erl"}, 
     {line,52}]}, 
{webmachine_resource,resource_call,3, 
    [{file, 
      "webmachine-wrapper/webmachine-git/src/webmachine_resource.erl"}, 
     {line,169}]}, 
{webmachine_resource,do,3, 
    [{file, 
      "webmachine-wrapper/webmachine-git/src/webmachine_resource.erl"}, 
     {line,128}]}, 
{webmachine_decision_core,resource_call,1, 
    [{file, 
      "webmachine-wrapper/webmachine-git/src/webmachine_decision_core.erl"}, 
     {line,48}]}, 
{webmachine_decision_core,decision,1, 
    [{file, 
      "webmachine-wrapper/webmachine-git/src/webmachine_decision_core.erl"}, 
     {line,416}]}, 
{webmachine_decision_core,handle_request,2, 
    [{file, 
      "webmachine-wrapper/webmachine-git/src/webmachine_decision_core.erl"}, 
     {line,33}]}, 
{rabbit_webmachine,'-makeloop/1-fun-0-',3, 
    [{file,"rabbitmq-mochiweb/src/rabbit_webmachine.erl"},{line,75}]}]} 

使用rabbitmqctl顯示所有在運行狀態:

rabbitmqctl list_connections pid name peer_address state 
Listing connections ... 
<[email protected]>  10.64.13.197:57321 -> 10.64.12.225:5672 10.64.13.197 running 
<[email protected]>  10.64.13.196:57240 -> 10.64.12.225:5672 10.64.13.196 running 
<[email protected]>  10.64.12.196:58608 -> 10.64.12.225:5672 10.64.12.196 running 
<[email protected]>  10.64.11.235:48962 -> 10.64.12.225:5672 10.64.11.235 running 
<[email protected]>  10.64.13.228:49857 -> 10.64.12.225:5672 10.64.13.228 running 
<[email protected]>  10.64.11.193:36387 -> 10.64.12.225:5672 10.64.11.193 running 
<[email protected]>  10.64.10.123:52017 -> 10.64.12.225:5672 10.64.10.123 running 
<[email protected]>  10.64.12.247:38504 -> 10.64.12.225:5672 10.64.12.247 running 
<[email protected]>  10.64.10.29:51483 -> 10.64.12.225:5672 10.64.10.29  running 
<[email protected]>  10.64.11.234:50244 -> 10.64.12.225:5672 10.64.11.234 running 
<[email protected]>  10.64.11.178:33795 -> 10.64.12.225:5672 10.64.11.178 running 
<[email protected]>  10.64.10.28:39557 -> 10.64.12.225:5672 10.64.10.28  running 
<[email protected]>  10.64.13.233:38766 -> 10.64.12.225:5672 10.64.13.233 running 
<[email protected]>  10.64.13.229:50932 -> 10.64.12.225:5672 10.64.13.229 running 
<[email protected]>  10.64.13.241:49311 -> 10.64.12.225:5672 10.64.13.241 running 
<[email protected]>  10.64.11.195:39455 -> 10.64.12.225:5672 10.64.11.195 running 
<[email protected]>  10.64.10.27:58938 -> 10.64.12.225:5672 10.64.10.27  running 
<[email protected]>  10.64.13.240:37777 -> 10.64.12.225:5672 10.64.13.240 running 
<[email protected]>  10.64.10.130:37251 -> 10.64.12.225:5672 10.64.10.130 running 
<[email protected]> 10.64.13.200:54840 -> 10.64.12.226:5672 10.64.13.200 running 
...done. 

並且存在與很多渠道是阻塞狀態,但我無法找到使用rabbitctl list_connections此連接:

AMQP 0-9-1 
10.64.13.200:45891 -> 10.64.12.226:5672 
[email protected] 0B/s 
(49.2MB total) 
0B/s 
(2.4MB total) 
0s 60920 

非常感謝您的幫助和建議。

回答

2

得到了來自RabbitMQ的郵件列表答案:

These connections/channels do not exist. You're seeing a bug in the management plugin where it will retain information about connections and channels that were alive on a cluster node when it crashed.

This bug was fixed in RabbitMQ 3.0.3.