接続監視
項目一覧
Overview
このガイドでは、Go ドライバーを使用してドライバーの接続プールを監視する方法を説明します。 接続プールは、ドライバーが MongoDB インスタンスと維持するオープン コントロール プロトコル(TCP)接続のセットです。 接続プールを使用すると、アプリケーションで作成する必要がある新しい接続の数が減るため、アプリケーションの実行が高速化される可能性があります。
パフォーマンスを最適化したり、クライアントのライフサイクルを理解したりするために、アプリケーション内の接続プール イベントに関する情報を使用することができます。
イベントにサブスクライブ
アプリケーションで接続プール イベントをサブスクライブすることで、その詳細にアクセスできます。 次の例では、 PoolMonitor
をインスタンス化し、配置に接続して、 PoolEvent
イベントをサブスクライブする方法を示しています。
var eventArray []*event.PoolEvent cxnMonitor := &event.PoolMonitor{ Started: func(e *event.PoolEvent) { eventArray = append(eventArray, e) }, } clientOpts := options.Client().ApplyURI(uri).SetPoolMonitor(cxnMonitor) client, err := mongo.Connect(context.TODO(), clientOpts)
イベントの説明
次の表では、ドライバーが発行するプール イベントの種類を説明します。
プール イベントタイプ | 説明 |
---|---|
ConnectionPoolCreated | 接続プールが作成されたときに作成されます。 |
ConnectionPoolReady | 接続プールが準備できたときに作成されます。 |
ConnectionPoolCleared | プール内のすべての接続が閉じられたときに作成されます。 |
ConnectionPoolClosed | サーバー インスタンスが破棄される前に、接続プールが閉じられたときに作成されます。 |
ConnectionCreated | 接続が作成されたときに作成されますが、操作に使用される場合は必ずしも作成されません。 |
ConnectionReady | 接続がハンドシェイクを完了し、操作に使用する準備ができた後に作成されます。 |
ConnectionClosed | 接続が閉じられたときに作成されます。 |
ConnectionCheckOutStarted | 操作が実行用接続を取得しようとしたときに作成されます。 |
ConnectionCheckOutFailed | 操作が実行用接続を取得できない場合に作成されます。 |
ConnectionCheckedOut | 操作が実行用接続を正常に取得したときに作成されます。 |
ConnectionCheckedIn | 操作が実行された後に接続がプールにチェックバックされたときに作成されます。 |
イベント ドキュメントの例
次のセクションでは、接続プールを監視するイベントの各タイプのサンプル出力を示します。
ConnectionPoolCreed
*event.PoolEvent { "type": "ConnectionPoolCreated", "address": "...", "connectionId": 0, "options": { "maxPoolSize": 100, "minPoolSize": 0, "maxIdleTimeMS": 0 }, "reason": "", "serviceId": null, "error": null }
ConnectionPoolReady
*event.PoolEvent { "type": "ConnectionPoolReady", "address": "...", "connectionId": 0, "options": null, "reason": "", "serviceId": null, "error": null }
ConnectionPoolCleared
*event.PoolEvent { "type": "ConnectionPoolCleared", "address": "...", "connectionId": 0, "options": null, "reason": "", "serviceId": null, "error": null }
ConnectionPoolClosed
*event.PoolEvent { "type": "ConnectionPoolClosed", "address": "...", "connectionId": 0, "options": null, "reason": "", "serviceId": null, "error": null }
ConnectionCreed
*event.PoolEvent { "type": "ConnectionCreated", "address": "...", "connectionId": 1, "options": null, "reason": "", "serviceId": null, "error": null }
ConnectionReady
*event.PoolEvent { "type": "ConnectionReady", "address": "...", "connectionId": 1, "options": null, "reason": "", "serviceId": null, "error": null }
ConnectionClosed
*event.PoolEvent { "type": "ConnectionClosed", "address": "...", "connectionId": 1, "options": null, "reason": "", "serviceId": null, "error": null }
ConnectionCheckOutStarted
*event.PoolEvent { "type": "ConnectionCheckOutStarted", "address": "...", "connectionId": 0, "options": null, "reason": "", "serviceId": null, "error": null }
ConnectionCheckOutFailed
*event.PoolEvent { "type": "ConnectionCheckOutFailed", "address": "...", "connectionId": 0, "options": null, "reason": "", "serviceId": null, "error": null }
ConnectionCheckedOut
*event.PoolEvent { "type": "ConnectionCheckedOut", "address": "...", "connectionId": 1, "options": null, "reason": "", "serviceId": null, "error": null }
ConnectionCheckedIn
*event.PoolEvent { "type": "ConnectionCheckedIn", "address": "...", "connectionId": 1, "options": null, "reason": "", "serviceId": null, "error": null }
詳細情報
デプロイのモニタリングの詳細については、「 MongoDB をモニタリングするMongoDB MongoDB」 に関する記事をご覧ください。
MongoDB への接続の詳細については、「 接続ガイド 」を参照してください。
API ドキュメント
このガイドで言及されているメソッドとタイプの詳細については、次のAPIドキュメントを参照してください。
PoolMonitor type
PoolEvent type
SetPoolMonitor() メソッド