翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
効果的な Amazon MQ パフォーマンスの確保
以下の設計パターンは、Amazon MQ ブローカーの有効性とパフォーマンスを向上させることができます。
トピック
低速コンシューマーのキューに対して同時保存とディスパッチを無効にする
デフォルトで、Amazon MQ は高速コンシューマーのキューに対して最適化を行います。
-
コンシューマーは、プロデューサーによって生成されるメッセージの速度に対応できる場合、高速とみなされます。
-
キューによって未確認メッセージのバックログが生成され、プロデューサーのスループットが低下する可能性がある場合、コンシューマーは低速とみなされます。
低速コンシューマーのキューに対して最適化を行うよう Amazon MQ に指示するには、concurrentStoreAndDispatchQueues
属性を false
に設定します。設定の例については、「concurrentStoreAndDispatchQueues」を参照してください。
最良なスループットのために正しいブローカーインスタンスタイプを選択する
ブローカーインスタンスタイプのメッセージスループットは、アプリケーションのユースケースおよび以下の要因に依存します。
-
ActiveMQ を永続モードで使用する
-
メッセージサイズ
-
プロデューサーとコンシューマーの数
-
送信先の数
メッセージサイズ、レイテンシー、およびスループット間の関係の理解
ユースケースによっては、より大きなブローカーインスタンスタイプはシステムスループットを向上させない場合があります。ActiveMQ が耐久性のあるストレージにメッセージを書き込むと、メッセージのサイズはシステムの制限要因を決定します。
-
メッセージが 100 KB 未満の場合、永続的ストレージのレイテンシーが制限要因となります。
-
メッセージが 100 KB 以上の場合、永続的ストレージのスループットが制限要因となります。
ActiveMQ を永続モード使用すると、ストレージへの書き込みは通常、前のコンシューマーがいくつか存在するか、あるいはコンシューマーが低速の場合に発生します。非永続的なモードでは、ブローカーインスタンスのヒープメモリに空き容量がない場合にも、低速のコンシューマーによるストレージへの書き込みが発生します。
アプリケーションにおける最適なブローカーインスタンスタイプを決定するには、異なるブローカーインスタンスタイプをテストすることが推奨されます。詳細については、「Broker instance types」および「Measuring the Throughput for Amazon MQ using the JMS Benchmark
より大きなブローカーインスタンスタイプのユースケース
より大きなブローカーインスタンスタイプがスループットを向上させるには、3 つの一般的なユースケースがあります。
-
非永続モード – アプリケーションがブローカーインスタンスのフェイルオーバー中におけるメッセージの喪失による影響を受けにくいときは、多くの場合 ActiveMQ の非永続モードを使用できます。このモードでは、ブローカーインスタンスのヒープメモリに空き容量がない場合にのみ、ActiveMQ は永続的ストレージにメッセージを書き込みます。非永続モードを使用するシステムは、大きなブローカーインスタンスタイプで利用できるより大きなメモリ容量、高速の CPU、および高速のネットワークの利点を活用できます。
-
高速コンシューマー – アクティブなコンシューマーが利用可能で、concurrentStoreAndDispatchQueues フラグが有効になっていると、ActiveMQ は、永続モードになっている場合でも、ストレージにメッセージを送信することなく、プロデューサーからコンシューマーへの直接的なメッセージのフローを許可します。アプリケーションが素早くメッセージを消費できる場合 (あるいは、コンシューマーがその処理を行えるように設計できる場合)、アプリケーションはより大きなブローカーインスタンスタイプの利点を活用できます。アプリケーションがより素早くメッセージを消費できるようにするには、アプリケーションインスタンスにコンシューマースレッドを追加するか、あるいはアプリケーションインスタンスを水平あるいは垂直にスケールアップします。
-
バッチトランザクション – 永続的モードを使用しており、トランザクションごとに複数のメッセージを送信するときは、より大きなブローカーインスタンスタイプを使用することによって、全体的に高いメッセージスループットを達成することができます。詳細については、ActiveMQ ドキュメントの「Should I Use Transactions?
」を参照してください。
最高のスループットのために正しいブローカーストレージタイプを選択する
複数のアベイラビリティーゾーン全体で優れた耐障害性とレプリケーションを活用するには、Amazon EFS を使用します。低レイテンシーと高スループットを活用するには、Amazon EBS を使用します。詳細については、「Storage」を参照してください。
ブローカーのネットワークを正しく設定する
ブローカーのネットワークを作成するときは、アプリケーションに合わせて正しく設定します。
-
永続モードを有効にする – 同等のものと比べると、各ブローカーインスタンスはプロデューサーまたはコンシューマーのように動作するため、ブローカーのネットワークはメッセージの分散レプリケーションを提供しません。コンシューマーとして機能する最初のブローカーはメッセージを受信し、それをストレージに永続化します。このブローカーは確認をプロデューサーに送信し、そのメッセージを次のブローカーに転送します。2 番目のブローカーがメッセージの持続性を確認すると、最初のブローカーはそのメッセージを削除します。
永続モードが無効になっている場合、最初のブローカーはメッセージをストレージに保持せずにプロデューサーに確認します。詳細については、Apache ActiveMQ ドキュメントの「レプリケートされたメッセージストア
」および「永続的配信と非永続的配信の違い 」を参照してください。 -
ブローカーインスタンスのアドバイザリーメッセージを無効にしない – 詳細については、Apache ActiveMQ ドキュメントの「Advisory Message
」を参照してください。 -
マルチキャストブローカー検出を使用しない – Amazon MQ はマルチキャストを使用したブローカー検出をサポートしません。詳細については、Apache ActiveMQ ドキュメントの「検出、マルチキャスト、および zeroconf の違い
」を参照してください。