いつもお世話になっております。
掲題の件で参考意見等伺いたく投稿させていただきます。
現在、システムでMongoDB(cappedコレクション)を一時受けとしたものを
構築しています。
1DB1コレクションで1mongod に数百のデータを持っています。
各コレクションは運用当初にデータ見積もりが難しいため、しばらく運用を
回してから、その実データを元にオンラインで処理を動かしながら、かつ、
capped設定(インデックスも付けているので+インデックス設定)を変更
しようとしています。
荒っぽい使い方をしていることは重々承知しているのですが、同じような
ことを試された経験などあれば、その時どのようにシステムを考えられたか
など教えていただけると助かります。
ちなみに、この設定で回していた時、おそらくinsertとconvertが重なったりする
ことが原因ではないかと思っていますが、mongoが異常終了することがありま
した。
----- BEGIN BACKTRACE -----
...
mongod(_ZN5mongo15printStackTraceERSo+0x32) [0x107b7b2]
mongod(_ZN5mongo10logContextEPKc+0xE9) [0x1018c79]
mongod(_ZN5mongo11msgassertedEiPKc+0xAE) [0xffd52e]
mongod(+0xBFD5DC) [0xffd5dc]
mongod(_ZN5mongo9DbMessage9nextJsObjEv+0x25D) [0xa96a9d]
mongod(_ZN5mongo14receivedUpdateEPNS_16OperationContextERNS_7MessageERNS_5CurOpE+0x14C) [0xb61c2c]
mongod(_ZN5mongo16assembleResponseEPNS_16OperationContextERNS_7MessageERNS_10DbResponseERKNS_11HostAndPortE+0x16EA) [0xb65d5a]
mongod(_ZN5mongo16MyMessageHandler7processERNS_7MessageEPNS_21AbstractMessagingPortEPNS_9LastErrorE+0xF5) [0x8b2675]
mongod(_ZN5mongo17PortMessageServer17handleIncomingMsgEPv+0x339) [0x102cfb9]
libpthread.so.0(+0x7AA1) [0x7fb68e6d3aa1]
libc.so.6(clone+0x6D) [0x7fb68d22493d]
----- END BACKTRACE -----
このシステムでは、クライアント側は、perl/python/c それぞれのドライバ
経由で接続しているものがあり、このメッセージがcappedと関連してのもの
かどうかは不明です。
一番やりたい理想形:
1. 最初しばらくデータを溜める。
2. バッチか何かで、データ数・データサイズを元に、1日分、などの
サイズを計算して、capped設定する。
3. 日々データ数・データサイズをチェックして、1日分溜められてい
ない設定のものについては、再convertする。
4. convert時もオンラインデータは受付可能とする。
いつも抽象的な質問で申し訳ありませんが、ご意見いただけると助かります。