5

mongostatとを使用してmongodbでプロファイリングを行っていますmongotop

私はmongotopを実行します:

$> mongotop 30

そして単にモンゴスタット:

$> mongostat

出力は次のとおりです。

モンゴトップ:

                    ns       total        read       write      2012-11-23T01:32:37
           sapi.Socket      1222ms      1222ms         0ms
       sapi.ChargeSpot       999ms       999ms         0ms

モンゴスタット:

insert  query update delete getmore command flushes mapped  vsize    res faults          locked db idx miss %     qr|qw   ar|aw  netIn netOut  conn     set repl       time 
     0   5351      0      0       0       1       0   608m  3.67g    64m      0          sapi:0.0%          0       0|0     1|0   569k     1m    63 capi-rs  PRI   12:32:41 
     0   4189      0      0       0       1       0   608m  3.67g    64m      0 knightsbridge:0.0%          0       0|0     0|0   499k   308k    63 capi-rs  PRI   12:32:42 

質問:

  • mongotop の出力については、30 秒間隔でレポートするために実行したため、たとえば sapi.Socket の合計 1222 ミリ秒の読み取りは次のことを意味します。

    30 秒間隔で、コレクション sapi.Socket からの読み取りクエリの実行に 1222 ミリ秒が費やされます。

    つまり、30 秒間で、mongo は読み取りクエリを処理するために 2,221 ミリ秒 (1,222 ミリ秒 + 999 ミリ秒) だけビジーだったということです。つまり、mongo は残りの 27 秒間アイドル状態だったということです。

  • mongostat の出力については、mongo が 1 秒あたり約 5K のクエリを処理しているように見えます。クエリは基本的です(インデックス付きキーによるルックアップ)
4

2 に答える 2

2

1 秒あたりの操作数のメトリックはすべて、特定のサーバーの構成とクラスター アーキテクチャごとの相対的なメトリックになります。ただし、5k クエリで Mongo をプッシュしているわけではありません。

使用する無料のツールは、DB プロファイラーです。この場合、プロファイラーはすべての操作を system.profile という名前のシステム コレクションにキャプチャします。その後、個々のクエリとその実行状況についてさらに洞察を得ることができます。

// dfl という名前の DB と test という名前のコレクションに対する // 挿入、削除、またはコマンドではなく、クエリ操作のみの診断の例。

db.system.profile.find({op: {$eq : 'クエリ'}, ns: 'dfl.test'})

// プロファイラーのステータスを確認します db.getProfilingStatus()

// プロファイラーをすべての操作に設定します db.setProfilingLevel(2)

于 2015-01-14T13:05:10.083 に答える
0

パフォーマンス チューニングについてはexplain、 、hintおよびprofileオプションを見てきました。しかし、プログラム内の高レベルを見て、どこで時間を費やしているかを把握したい場合はどうすればよいでしょうか? コマンドMongotopにちなんで名付けられました。シェルでログを表示するには、コマンドを使用します。ここで、次のログ エントリが出力されるまでの秒数です。Unixtopmongotop secondsseconds

例えば:mongotop 3

于 2016-09-05T11:30:33.987 に答える