AmazonCloudでnode.js/mongoアプリを実行して稼働する準備が整いました。Mongoサーバー用に3xレプリカを設定しています。突然、約20分前に、PRIMARY mongoサーバーが100%のCPU使用率にジャンプするまで(通常はほとんど使用されていません)、すべてが正常に機能していました。私は現在、10人までのユーザーでアプリをテストしているので、これは非常に心配です。
もちろん、私の最初の反応は、サーバーからmongodbログファイルを取得することでした。これが明らかになると思っていましたが、今ではこれまで以上に混乱しています。私のデータベースの主な機能の1つは、ユーザーのデータをキャッシュすることです。そのため、JSON文字列(マングースコード)を格納するだけのコレクション('DataCache')があります。
new Model('DataCache',{
'_id': { type: String, unique: true },
'data': String,
'updated': Date });
「100%CPU」時間のログを見ると、標準の更新要求が実行されたことがわかりますが、最大47秒かかります。
Mon Aug 6 08:58:36 [conn28821] update storage.datacache query: { _id: "14954006/mentions/dcc3c69e72da714a0f3bffc518183ebb" } update: { $set: ... } } 47174ms
このリクエストのデータは通常より長くはありませんでした(JSON文字列の約1000文字。簡潔にするために、ここではデータが切り捨てられています)。
なぜ私の使用量が突然急増したのかを理解するために他にどこを探すべきか本当にわかりません。このシナリオで何が異常でユニークなのか想像できません。ログには他に何も表示されませんが、10人のユーザーが数千人に拡大するとどうなるか非常に心配しています...
問題は、起動してから約20分後に突然消えましたが、CPUにはまだ奇妙なスパイクが見られます(RightScaleダッシュボードイメージ)。
更新:特にキャッシュコレクションについて、mongoから出力された情報を次に示します。問題がキャッシュコレクションに関係しているのかどうかはわかりませんが、これは、ラグタイム中に最も一貫して表示されていた1つのクエリです...
{
"ns" : "storage.datacache",
"count" : 43949,
"size" : 132274592,
"avgObjSize" : 3009.729277116658,
"storageSize" : 158887936,
"numExtents" : 13,
"nindexes" : 5,
"lastExtentSize" : 33828864,
"paddingFactor" : 1.0099999999994833,
"flags" : 1,
"totalIndexSize" : 10972192,
"indexSizes" : {
"_id_" : 4570384,
},
"ok" : 1
}
編集:より多くのグラフ