New Relic Node.js エージェントは、RabbitMQ クライアントライブラリ amqplib をサポートしており、受信メッセージと送信メッセージの両方について、メッセージ処理のパフォーマンスを把握することができます。
この機能を利用するには、New Relic Node.js エージェントのバージョン 2.0.0 以上が必要です 。
バックグラウンドタスクのパフォーマンス改善
Webアプリケーションの応答性を向上させる方法の一つとして、バックグラウンドプロセスに作業を委ねる方法があります。このプロセス間通信には、メッセージキューがよく使われます。
メッセージ キューイング システムのコンテキストでは、アプリケーションは通常、メッセージ ブローカーと対話してメッセージを送受信します。amqplib
クライアント ライブラリを使用すると、Node.js アプリケーションは、Advanced Message Queuing Protocol (AMQP) 0.9 以降を実装するメッセージ ブローカーとやり取りできます。
New Relic の Node.js エージェントは、RabbitMQ クライアントライブラリを使用して送受信されたメッセージを表示します。この可視性により、以下のような詳細を確認することができます。
- アプリで生成されたメッセージの数
- アプリがメッセージを公開するのにかかる時間
- アプリが"消費された" メッセージの処理に費やす時間
APM は、キューとやりとりするオペレーションを便利にグループ化し、レポートします。この情報を分析することで、メッセージパッシングアーキテクチャのボトルネックやパフォーマンス向上のための領域をより簡単に特定することができます。
キューの操作
キュー操作でサポートされているエントリ ポイントは、APM のユーザー インターフェースではPut
(メッセージの発行) またはTake
(メッセージの受信) として表示されます。
Queue operations | Publish a message ( | Receive a message ( |
---|---|---|
RabbitMQ |
|
|
New Relic UIでの表示
キュー操作は、選択したアプリの APM のTransactionsページに表示されます。 Put
とTake
メトリクスはBreakdown tableに表示され、 MessageBroker
メトリクスとして分類されます。 以下に例を示します。
one.newrelic.com > All capabilities > APM & services > Applications > (select an app) > Transactions > (select a transaction): トランザクションのBreakdown tableはキュー操作をMessageBroker
メトリクスとして分類し、それらにPut
(メッセージの発行) またはTake
(メッセージの受信) のラベルを付けます。
低速トレースの概要ページでは、Slowest componentsセクションにPut
およびTake
の操作が表示される場合があります。 例えば:
one.newrelic.com > All capabilities > APM & services > Applications > (select an app) > Summary > (select a transaction trace): この例では、選択された戦場トレースのSummaryは、RabbitMQ 操作を色付きのバーチャートで示しています。 Slowest componentsセクションには、RabbitMQ Put
およびTake
の結果もリストされます。
Transaction traceページには、トランザクションの一部として発生したメッセージ アクティビティの概要を表示する専用のMessagesタブも含まれています。
ヒント
APMのアプリのSummaryまたはTransactionsページから、段階トレースを選択できます。