Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/
データベース マニュアル
/ / / /

低速クエリの監視

$currentOp集計ステージでは、 MongoDBで現在実行中すべての操作に関する情報が提供されます。アプリケーションにパフォーマンスの問題が発生している場合は、このステージの周囲に集計パイプラインをビルドして、低速クエリや同様の問題を監視できます。

このタスクは$currentOpを使用して、アプリケーションで現在実行中低速クエリを識別します。指定された期間内のすべての低速クエリを見つけるには、プロファイラーの使用を検討してください。

プロファイラー
説明

Atlas クエリプロファイラー

Atlas のカスタマーに 散布図チャートを提供し、低速クエリやパフォーマンスの例外を簡単に特定できるようにします。

クエリ パフォーマンス情報をコレクションに保存し、特定のパフォーマンス問題を持つクエリをMongoDBに照会できます。

Atlas クエリプロファイラーとデータベースプロファイラ はどちらも、サーバーのパフォーマンスに影響を与え、ディスク領域を使用し、暗号化されたフィールドのクエリ メタメタデータを公開する可能性があります。 有効にする前に、パフォーマンスとセキュリティへの影響を検討してください。

このタスクは、パフォーマンスの問題があるクエリを識別します。パフォーマンスの問題が発生するクエリをすでにわかっている場合は、低速クエリの説明を参照してそのトラブルシューティングを行います。

1

MongoDBから現在の操作を取得するには、$currentOp集計ステージを使用します。

db.getSiblingDB("admin").aggregate( [
{ $currentOp: { allUsers: true } },
{ $match: { secs_running: { $gt: 2 } } },
{ $sort: { secs_running: 1 } }
] )
[
{
"opid": "12345",
"secs_running": 5,
"active": true,
"ns": "sample_mflix.movies",
"command": {
"find": "movies",
"filter": { "title": { "$regex": "The" } }
},
"planSummary": "COLLSCAN",
"locks": { ... },
"client": "203.0.113.25:43210"
}
]

この集計パイプラインは、クラスター内のすべての現在の操作を検索します。 The $match集計ステージでは、2 秒以上実行中ている操作に操作がフィルタリングされます。これにより、指定した期間内に実行されるクエリをフィルタリングできます。アプリケーションとデータベースのニーズに合わせて値を調整します。

$sort ステージでは、optime の昇順で結果がソートされます。

2

currentOp.activeフィールドを表示します。currentOp.activetrue の場合、 MongoDB は操作が現在実行中であることを示します。

長時間実行中操作を停止するには、db.killOp() メソッドを使用して、指定された opid を停止します。

3

currentOp.waitingForLockフィールドを表示します。currentOp.waitingForLocktrue の場合、サーバーまたはクラスターで実行中の別の操作がクエリをブロックしています。

ブロックされた操作を停止するには、db.killOp() メソッドを使用して指定された opid を停止します。

4

currentOp.planSummaryフィールドの値を確認します。

IXSCAN
クエリがインデックススキャンを実行したことを示します。
COLLSCAN
クエリが フルコレクションスキャンを実行したことを示します。これを修正するには、インデックスを作成します
5

$currentOp 集計ステージによって追加の調査が必要なクエリが返される場合は、explain() メソッドを使用してクエリプランと実行統計を分析します。

詳細については、低速クエリの説明を参照してください。

戻る

低速クエリの特定

項目一覧