モニター
@EnableWebSocketMessageBroker
または <websocket:message-broker>
を使用すると、主要なインフラストラクチャコンポーネントが統計とカウンターを自動的に収集し、アプリケーションの内部状態に関する重要なインサイトを提供します。この構成では、型 WebSocketMessageBrokerStats
の Bean も宣言されており、利用可能なすべての情報を 1 つの場所に収集し、デフォルトで 30 分ごとに INFO
レベルでログに記録します。この Bean は、Spring の MBeanExporter
を介して JMX にエクスポートし、実行時に表示できます(たとえば、JDK の jconsole
を介して)。次のリストは、利用可能な情報をまとめたものです。
- クライアント WebSocket セッション
- カレント
現在存在するクライアントセッションの数を示します。カウントは、WebSocket と HTTP ストリーミングおよび SockJS セッションのポーリングによってさらに分類されます。
- 合計
確立されたセッションの合計数を示します。
- 異常閉鎖
- 接続障害
確立されましたが、60 秒以内にメッセージを受信しなかった後に閉じられたセッション。これは通常、プロキシまたはネットワークの課題を示しています。
- 送信制限を超えました
設定された送信タイムアウトまたは送信バッファ制限を超えた後にセッションが閉じられました。これは、低速クライアントで発生する可能性があります(前のセクションを参照)。
- トランスポートエラー
WebSocket 接続または HTTP リクエストまたはレスポンスの読み取りまたは書き込みの失敗など、トランスポートエラーの後にセッションが閉じられました。
- STOMP フレーム
処理された CONNECT、CONNECTED、DISCONNECT フレームの合計数。STOMP レベルで接続されたクライアントの数を示します。セッションが異常終了した場合、またはクライアントが DISCONNECT フレームを送信せずに閉じた場合、DISCONNECT カウントは低くなることに注意してください。
- STOMP ブローカーリレー
- TCP 接続
クライアント WebSocket セッションに代わってブローカーに対して確立される TCP 接続の数を示します。これは、クライアント WebSocket セッションの数 + アプリケーション内からメッセージを送信するための 1 つの追加の共有「システム」接続に等しくなければなりません。
- STOMP フレーム
クライアントに代わってブローカーに転送された、またはブローカーから受信した CONNECT、CONNECTED、DISCONNECT フレームの総数。クライアント WebSocket セッションがどのように閉じられたかに関係なく、DISCONNECT フレームがブローカーに送信されることに注意してください。DISCONNECT フレーム数が少ないということは、ブローカーが積極的に接続を閉じていることを示しています(ハートビートが間に合わなかった、無効な入力フレーム、その他の課題が原因である可能性があります)。
- クライアント受信チャネル
clientInboundChannel
をサポートするスレッドプールからの統計情報。受信メッセージ処理の状態に関するインサイトを提供します。ここでのタスクのキューイングは、アプリケーションがメッセージを処理するには遅すぎる可能性があることを示しています。I/O バウンドタスク(たとえば、遅いデータベースクエリ、サードパーティ REST API への HTTP リクエストなど)がある場合は、スレッドプールサイズを増やすことを検討してください。- クライアント送信チャネル
clientOutboundChannel
をサポートするスレッドプールからの統計。クライアントへのブロードキャストメッセージの健全性に関するインサイトを提供します。ここでキューイングするタスクは、クライアントが遅すぎてメッセージを消費できないことを示しています。これに対処する 1 つの方法は、スレッドプールサイズを増やして、予想される同時クライアントの数に対応することです。もう 1 つのオプションは、送信タイムアウトと送信バッファサイズの制限を減らすことです(前のセクションを参照)。- SockJS タスクスケジューラ
ハートビートの送信に使用される SockJS タスクスケジューラのスレッドプールからの統計。STOMP レベルでハートビートがネゴシエートされると、SockJS ハートビートが無効になることに注意してください。