わかりやすくするために更新:に挿入/追加するときのパフォーマンスについてアドバイスが必要capped collection
です。2 つの Python スクリプトを実行しています。
(1) カーソルの尾引き。
while WSHandler.cursor.alive:
try:
doc = WSHandler.cursor.next()
self.render(doc)
(2) 次のように挿入します。
def on_data(self, data): #Tweepy
if (len(data) > 5):
data = json.loads(data)
coll.insert(data) #insert into mongodb
#print(coll.count())
#print(data)
しばらくは正常に動作しています (50 挿入/秒)。その後、20 ~ 60 秒後につまずき、CPU ルーフにぶつかり (以前は 20% で実行されていましたが)、回復することはありません。私のモンゴスタットはダイブします (ダイブは以下に示されています)。
モンゴスタットの出力:
CPU は、挿入を行うプロセスによって (少なくとも に従ってhtop
) チョークされます。
上記の Tweepy 行print(data)
を db ( coll.insert(data)
) に追加する代わりに実行すると、15% の CPU 使用率ですべてが正常に実行されます。
mongostats に表示される内容:
res
登り続けます。(ただし、100m で問題なく走るだけでなく、40m で詰まりが発生する場合もあります。)flushes
干渉しないようです。locked %
0.1%で安定しています。これは最終的に目詰まりにつながりますか?
(AWS マイクロインスタンス (pymongo) を実行しています。)