更新爲清楚:我插入/追加到capped collection
時需要諮詢的性能。我有兩個python腳本運行:效率插入的MongoDB(pymongo)時
(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%),並且從未恢復。我的mongostats進行潛水(潛水如下圖所示)。
Mongostat輸出:
現在,CPU阻塞,由(至少根據htop
)做所述插入的處理。
當我使用print(data)
而不是將它添加到db(coll.insert(data)
)上面運行Tweepy行時,在CPU使用率爲15%時,一切正常運行。
我看到mongostats什麼:
res
一路攀升。 (雖然木cl可能發生在40米以及在100米上運行良好。)flushes
似乎並不干涉。locked %
穩定在0.1%。這會最終導致堵塞嗎?
(我運行AWS microinstance; pymongo。)
你在其他地方獲得什麼樣的表現?我從來沒有聽說過關於AWS micros的性能的任何正面消息。 –
還沒有在其他地方檢查過,目前不能這樣做。實際上,它大多數時間都在順利運行,但是時不時地堵塞 - 當它發生時,它就是管道工時間,沒有別的事情要做。 :/ – knutole
也許你的集合缺少索引。 db.coll.stats()的輸出是什麼? –