2

アプリケーションで rabbitmq を使用しています。2 時間前に、rabbitmq に接続しようとすると、アプリケーション サーバーの 1 つがブロックされました。rabbitmq サーバーを確認した後、1 つのノードのメモリがウォーターマークを超えていることがわかりました。数分後、このノードはダウンしています。このノードを再起動すると、クラスター全体が正常に動作しますが、Web 管理からのブロックおよびブロックされた状態に多くの接続があることに気付きました rabbitmqctl list_connections pid name peer_address state。 :

  1. クラスター全体の 1 つのノードがウォーターマークを超えた後、他のノードは正常に動作しているため、アプリケーションが rabbitmq クラスターに接続できませんか? 追伸: バージョン 1.1.0.RELEASE で spring.amqp と spring-rabbit を使用します
  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,rabbit@cos22}}

ブロックされた接続を 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 ...
<rabbit@cos23.1.1271.51>        10.64.13.197:57321 -> 10.64.12.225:5672 10.64.13.197    running
<rabbit@cos23.1.1100.51>        10.64.13.196:57240 -> 10.64.12.225:5672 10.64.13.196    running
<rabbit@cos23.1.1056.51>        10.64.12.196:58608 -> 10.64.12.225:5672 10.64.12.196    running
<rabbit@cos23.1.1079.51>        10.64.11.235:48962 -> 10.64.12.225:5672 10.64.11.235    running
<rabbit@cos23.1.1419.51>        10.64.13.228:49857 -> 10.64.12.225:5672 10.64.13.228    running
<rabbit@cos23.1.1049.51>        10.64.11.193:36387 -> 10.64.12.225:5672 10.64.11.193    running
<rabbit@cos23.1.1159.51>        10.64.10.123:52017 -> 10.64.12.225:5672 10.64.10.123    running
<rabbit@cos23.1.26289.45>       10.64.12.247:38504 -> 10.64.12.225:5672 10.64.12.247    running
<rabbit@cos23.1.1121.51>        10.64.10.29:51483 -> 10.64.12.225:5672  10.64.10.29     running
<rabbit@cos23.1.1067.51>        10.64.11.234:50244 -> 10.64.12.225:5672 10.64.11.234    running
<rabbit@cos23.1.1149.51>        10.64.11.178:33795 -> 10.64.12.225:5672 10.64.11.178    running
<rabbit@cos23.1.1136.51>        10.64.10.28:39557 -> 10.64.12.225:5672  10.64.10.28     running
<rabbit@cos23.1.1370.51>        10.64.13.233:38766 -> 10.64.12.225:5672 10.64.13.233    running
<rabbit@cos23.1.1388.51>        10.64.13.229:50932 -> 10.64.12.225:5672 10.64.13.229    running
<rabbit@cos23.1.1254.51>        10.64.13.241:49311 -> 10.64.12.225:5672 10.64.13.241    running
<rabbit@cos23.1.1031.51>        10.64.11.195:39455 -> 10.64.12.225:5672 10.64.11.195    running
<rabbit@cos23.1.1038.51>        10.64.10.27:58938 -> 10.64.12.225:5672  10.64.10.27     running
<rabbit@cos23.1.1167.51>        10.64.13.240:37777 -> 10.64.12.225:5672 10.64.13.240    running
<rabbit@cos23.1.1442.51>        10.64.10.130:37251 -> 10.64.12.225:5672 10.64.10.130    running
<rabbit@cos22.3.2659.0> 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
rabbit@cos22    0B/s
(49.2MB total)
0B/s
(2.4MB total)
0s  60920

助けと提案をありがとう。

4

1 に答える 1

2

rabbitmq メーリング リストから回答を得ました。

これらの接続/チャネルは存在しません。管理プラグインにバグがあり、クラスター ノードがクラッシュしたときに接続とチャネルに関する情報が保持されます。

このバグは、RabbitMQ 3.0.3 で修正されました。

于 2013-04-17T09:21:12.253 に答える