Amazon MQ for RabbitMQ: 高メモリアラーム - Amazon MQ

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon MQ for RabbitMQ: 高メモリアラーム

Amazon MQ for RabbitMQ は、CloudWatch メトリクス によって識別されるブローカーのメモリ使用量が、 によって識別されるメモリ制限を超えるとRabbitMQMemUsed、高メモリアラームを生成しますRabbitMQMemLimit

高メモリアラームを発生させた RabbitMQ ブローカーは、メッセージを発行しているすべてのクライアントをブロックします。ブローカーが再起動ループに入ったり、キューの同期が一時停止されたり、アラームの診断と解決を複雑にするその他の問題が発生する可能性があります。

高メモリアラームを診断して解決するには、まず RabbitMQ のすべてのベストプラクティスに従い、次のステップを実行します。

重要
  • RabbitMQMemLimit は Amazon MQ によって設定され、ホストインスタンスタイプごとに使用可能なメモリを考慮して特別に調整されます。

  • Amazon MQ では、高メモリアラームが発生しているブローカーの再起動は行われません。また、ブローカーでアラームが発生し続ける限り RebootBroker API オペレーションに対して例外が返されます。

ステップ 1: 高メモリアラームを診断する

Amazon MQ for RabbitMQ ブローカーで高メモリアラームを診断するには、2 つの方法があります。CloudWatch で RabbitMQ ウェブコンソールと Amazon MQ メトリクスの両方を確認することをお勧めします。

RabbitMQ ウェブコンソールを使用して高メモリアラームを診断する

RabbitMQ ウェブコンソールでは、各ノードのメモリ使用率の詳細情報を生成して表示できます。この情報は、次の手順を実行することで確認できます。

  1. にサインイン AWS Management Console し、ブローカーの RabbitMQ ウェブコンソールを開きます。

  2. RabbitMQ コンソールの [Overview] (概要) ページで、[Nodes] (ノード) リストからノードの名前を選択します。

  3. ノードの詳細ページで、[Memory details] (メモリの詳細) を選択してセクションを展開し、ノードにおけるメモリ使用率の情報を表示します。

RabbitMQ がウェブコンソールで提供するメモリ使用率の情報は、メモリを消費しすぎている可能性や、高メモリアラームの原因となる可能性のあるリソースを特定するのに役立ちます。RabbitMQ ウェブコンソールで利用可能なメモリ使用量の詳細については、RabbitMQ サーバードキュメントウェブサイトの「メモリの使用に関する理由」を参照してください。

Amazon MQ メトリクスを使用して高メモリアラームを診断する

Amazon MQ は、デフォルトでブローカーのメトリクスを有効にします。CloudWatch コンソールにアクセスするか、CloudWatch API を使用して、ブローカーのメトリクスを表示できます。次のメトリクスは、RabbitMQ の高メモリアラームを診断する際に便利です。

Amazon MQ CloudWatch メトリクス メモリ使用量が多い理由
MessageCount メッセージは、消費または破棄されるまでメモリに格納されます。メッセージ数が多いと、リソースの過剰使用が表示され、高メモリアラームの原因となる可能性があります。
QueueCount また、キューはメモリに格納されます。キューの数が多いと高メモリアラームの原因となる可能性があります。
ConnectionCount クライアント接続にはメモリを使用するため、同時接続が多すぎると高メモリアラームの原因となる可能性があります。
ChannelCount 接続と同様に、各接続を使用して確立されたチャネルもノードメモリに格納されます。チャネルの数が多いと高メモリアラームの原因となる可能性があります。
ConsumerCount ブローカーに接続されているすべてのコンシューマーについて、設定された数のメッセージは、コンシューマーに配信される前にストレージからメモリにロードされます。コンシューマーの接続が多いと、メモリ使用率が高くなり、高メモリアラームの原因となる可能性があります。
PublishRate メッセージの発行には、ブローカーのメモリが使用されます。メッセージがブローカーに発行される速度が高すぎて、ブローカーがコンシューマーにメッセージを配信する速度を大幅に上回ると、ブローカーで高メモリアラームが発生する可能性があります。

ステップ 2: 高メモリアラームに対処して防止する

注記

必要なアクションを実行した後、RABBITMQ_MEMORY_ALARM ステータスがクリアされるまでに数時間かかる場合があります。

一般的な予防方法として、RabbitMQ のすべてのベストプラクティスに従ってください。特定した特定のコントリビューターごとに、RabbitMQ ハイメモリアラームに対処して防止するために、次の一連のアクションをお勧めします。

メモリ使用量が多い原因 対処に関する Amazon MQ の推奨事項 防止のための Amazon MQ の推奨事項
メッセージの数 キューに発行されたメッセージの消費、キューからのメッセージの消去、またはブローカーからのキューの削除。 レイジーキューを有効にし、キューの深度制限を設定または削減します。
キューの数 キューの数を減らします。 キュー数の制限を設定または減らします。
接続の数 接続の数を減らします 接続数の制限を設定または減らします。
チャンネルの数 チャネルの数を減らします クライアントアプリケーションで、接続あたりのチャネルの最大数を設定します。
コンシューマー数 ブローカーに接続されたコンシューマーの数を減らします。 小さいコンシューマーのプリフェッチの制限を設定します。
メッセージ発行レート パブリッシャーがメッセージをブローカーに発行する速度を低くします。  パブリッシャーの確認をオンにします
クライアント接続の試行レート メッセージを発行または消費できるようにクライアントがブローカーへの接続を試行する頻度を減らすか、ブローカーを設定します。 より長時間の接続を使用して、接続の試行回数と頻度を減らします。

ブローカーのメモリアラームが解決されたら、ホストインスタンスタイプを追加のリソースを持つインスタンスにアップグレードできます。ブローカーのインスタンスタイプを更新する方法については、Amazon MQ REST API リファレンスUpdateBrokerInputの「」を参照してください。

注記

ブローカーをmq.m5.xインスタンスタイプからmq.t3.microインスタンスタイプにダウングレードすることはできません。ダウングレードするには、ブローカーを削除して新しいブローカーを作成する必要があります。