256bitの殺人メニュー

インフラエンジニアだったソリューションアーキテクトなくわののブログ。こちらのBlogは個人の意見となっていて会社とは全く関係ありません。お約束です。[twitter:@kuwa_tw]めんどくさがりが重い腰を上げて何かをアウトプットすることにどれほどの意味があるのかを試してみたいブログでもある。

mongotop

mongodb2.0からmongotopと言うコマンドが入って来てました。
結構便利だったので、紹介。


RESTのページや、ログからスロークエリを見つけることも多いですが、mongotopだとリアルタイムに状況が見られるのでトラブルシューティングにはかなりよいかと。
mongos経由では使用できないので、怪しいmongodに対して実行しましょう。

コマンド

$ /usr/local/mongodb-linux-x86_64-2.0.2/bin/mongotop -h 192.168.0.100:27017

表示例

通常時はこんな感じになる。local.oplog.rsはレプリケーションのためのoplogへのアクセスでこれはいつも1000〜2000ms前後になっている。

$ /usr/local/mongodb-linux-x86_64-2.0.2/bin/mongotop -h 192.168.0.100:27017
connected to: 192.168.0.100:27017

ns total read write 2012-01-31T13:38:08
local.oplog.rs 1903ms 1903ms 0ms
testdb.TestCol01 11ms 2ms 8ms
testdb.TestCol02 8ms 8ms 0ms
testdb.TestCol03 6ms 0ms 4ms
testdb.TestCol04 4ms 0ms 4ms

遅いサーバだとこんな感じになるので遅いコレクション(ここではtestdb.TestCol01)に対するアクセスを見直す。
そのmongod全体のクエリが重いのであれば、ディスクI/Oとか、グローバルロックを疑う。

ns total read write 2012-01-31T14:48:51
local.oplog.rs 1636ms 1636ms 0ms
testdb.TestCol01 153ms 122ms 30ms
testdb.TestCol02 36ms 3ms 30ms
testdb.TestCol03 23ms 23ms 0ms
testdb.TestCol04 18ms 18ms 0ms


NoSQLデータベースファーストガイド

NoSQLデータベースファーストガイド