MongoDBの現在の構成を確認する方法|getCmdLineOptsとgetParameterの使い方を解説
MongoDBの運用やトラブルシューティングを行う際には、サーバーが現在どのような設定で起動しているのかを正確に把握することが重要です。MongoDBでは、getCmdLineOpts コマンドと getParameter コマンドを使うことで、起動時のオプションと実行中の内部パラメータをそれぞれ簡単に確認できます。
本記事では、これら2つのコマンドの使い方と実際の出力例について、具体例を挙げながらわかりやすく解説します。
1. 起動時のコマンドラインオプションを確認する(getCmdLineOpts)
mongodが起動されたときに指定されたコマンドライン引数や設定ファイルの内容を確認したい場合は、getCmdLineOpts を使用します。以下のように _adminCommand 経由で実行します。
> db._adminCommand( {getCmdLineOpts: 1} );実行結果は次のようになります。
{
"argv" : [ "mongod" ],
"parsed" : { },
"ok" : 1
}この出力では、「argv」フィールドに起動時に渡された引数の一覧が表示され、「parsed」フィールドには解析済みの設定内容が含まれます。上記の例では追加のオプションなしで mongod が起動されているため、parsed は空になっています。設定ファイル(--config オプション)を指定して起動した場合は、その内容も parsed 内に反映されます。
なお、より一般的な書き方として、以下のように admin データベースに対して db.adminCommand() を使うこともできます。
> use admin
> db.adminCommand( {getCmdLineOpts: 1} )2. 実行中のライブ設定を確認する(getParameter)
MongoDBサーバーの現在稼働中の内部パラメータ(ライブ設定)をすべて確認したい場合は、getParameter にワイルドカード「*」を指定して実行します。
> db._adminCommand( {getParameter: "*"} );実行すると、サーバーに設定されている膨大な数のパラメータが一括で返されます。以下はその出力例(抜粋)です。
{
"AsyncRequestsSenderUseBaton" : true,
"KeysRotationIntervalSec" : 7776000,
"ShardingTaskExecutorPoolHostTimeoutMS" : 300000,
"ShardingTaskExecutorPoolMaxConnecting" : 2,
"ShardingTaskExecutorPoolMaxSize" : -1,
"ShardingTaskExecutorPoolMinSize" : 1,
"authenticationMechanisms" : [
"MONGODB-X509",
"SCRAM-SHA-1",
"SCRAM-SHA-256"
],
"cursorTimeoutMillis" : NumberLong(600000),
"diagnosticDataCollectionEnabled" : true,
"enableLocalhostAuthBypass" : true,
"featureCompatibilityVersion" : {
"version" : "4.0"
},
"logLevel" : 0,
"maxBSONDepth" : 200,
"maxIndexBuildMemoryUsageMegabytes" : 500,
"maxSessions" : 1000000,
"notablescan" : false,
"quiet" : false,
"scramIterationCount" : 10000,
"sslMode" : "disabled",
"syncdelay" : 60,
"transactionLifetimeLimitSeconds" : 60,
"ttlMonitorEnabled" : true,
"ttlMonitorSleepSecs" : 60,
"wiredTigerConcurrentReadTransactions" : 128,
"wiredTigerConcurrentWriteTransactions" : 128,
"ok" : 1
}実際の出力には、シャーディング関連、レプリケーション関連、クエリプランナー関連、WiredTigerストレージエンジン関連など、非常に多くのパラメータが含まれます。ここでは代表的な項目のみを抜粋しています。
主なパラメータのポイント
- featureCompatibilityVersion: 機能互換性バージョンを示し、レプリカセットやシャード間の互換性管理に重要です。
- wiredTigerConcurrentReadTransactions / wiredTigerConcurrentWriteTransactions: ストレージエンジンが同時に処理できる読み書きトランザクション数です。
- transactionLifetimeLimitSeconds: マルチドキュメントトランザクションの最大存続時間(デフォルト60秒)です。
- authenticationMechanisms: 有効になっている認証方式の一覧です。
特定のパラメータだけを確認する方法
すべてではなく、特定のパラメータのみを確認したい場合は、ワイルドカードの代わりにパラメータ名を直接指定します。
> db._adminCommand( {getParameter: 1, notablescan: 1} );このようにすることで、目的の設定値だけを効率的に取得でき、大量の出力を避けることができます。
まとめ
MongoDBの現在の構成を確認するには、以下の2つのコマンドを覚えておくと便利です。
- getCmdLineOpts: 起動時のコマンドライン引数・設定ファイルの内容を確認する。
- getParameter: "*": 実行中のサーバーのライブ設定(内部パラメータ)をすべて確認する。
これらのコマンドを使いこなすことで、パフォーマンスチューニングや障害調査の際に、サーバーの現在状態を素早く把握できるようになります。設定変更を行う前後で必ず現在値を記録しておくと、問題発生時の切り分けにも役立ちます。
-
C#でスレッドの現在の状態を確認する方法|ThreadStateプロパティの使い方
C#でスレッドの現在の状態を確認するには、ThreadState プロパティを使用します。このプロパティは、スレッドが「Unstarted(未開始)」「Running(実行中)」などどの状態にあるかを、ThreadState 列挙型の値として返します。以下に具体的なコード例を示します。 コード例1:ThreadState と ManagedThreadId の取得 using System; using System.Threading; public class Demo { public static void Main(){ Thread thread = new
-
Pythonで文字列が10進数字のみで構成されているか判定する方法
Pythonでは、文字列が10進数字(0〜9)だけで構成されているかどうかを確認する方法がいくつかあります。ここでは、代表的な3つの方法を紹介します。 1. isdigit()メソッドを使う 最もシンプルな方法は、文字列クラスに組み込まれている isdigit() メソッドを使うことです。このメソッドは、文字列内のすべての文字が数字であり、かつ少なくとも1文字以上存在する場合に True を返し、それ以外の場合は False を返します。 >>> 12345.isdigit() True >>> 12345a.isdigit() False ただし、isd