currentOp (実行中の操作)
最終更新:2026-10-09
currentOp (実行中の操作)
currentOp は現在実行中の操作を一覧表示し、低速クエリや長時間実行(ブロックされた書き込み、開いたトランザクション)の診断に使います。各エントリは opid、client、ns、secs_running、command を公開し、db.killOp(opid) と組み合わせて終了できます。mongosh では db.currentOp({ active: true }) を直接呼べます。
| カテゴリ | 監視と診断 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
db.currentOp()
db.currentOp({ active: true, secs_running: { $gt: 5 } })
db.killOp(<opid>)
⚙️ パラメータ
| active | active が true の操作のみを返します。 |
|---|---|
| secs_running | 実行秒数で絞り込みます(例: $gt: 5)。 |
戻り値:操作ごとに1つの詳細ドキュメントを持つ inprog 配列を返します
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// currentOp: 5 秒以上実行中の操作を探す
db.currentOp({ active: true, secs_running: { $gt: 5 } })
// opid で終了する
// db.killOp(12345)
出力:
{ inprog: [ { opid: 12345, secs_running: 12, ns: 'shop.orders' } ], ok: 1 }
📌 注意事項
- $currentOp アグリゲーションパイプラインは名前空間・コマンドなどで精密に絞り込める
- killOp は操作を中断するが、トランザクションのロールバックに時間がかかることもある
- clusterMonitor などの inprog 権限が必要
🏷️ 関連タグ
💡 関連ケース
📚 関連チュートリアル
❓ よくある質問
Q低速クエリはどう見つけますか?
Adb.currentOp({ active: true, secs_running: { $gt: 5 } }) を実行し、secs_running で並べ替えます。
Q固まった操作はどう終了しますか?
AcurrentOp の opid を取得し、db.killOp(opid) を実行します。
QcurrentOp には権限が必要ですか?
Aはい。inprog / killop 権限が必要です。通常ユーザーは自分の操作しか見えません。