1

为清楚起见进行了更新:插入/附加到capped collection. 我有两个 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% 的速度运行),并且再也没有恢复。我的 mongostats 潜水(潜水如下所示)。

Mongostat 输出: Mongostat 输出

CPU 现在被执行插入的进程阻塞(至少根据htop)。

当我运行上面的 Tweepy 行print(data)而不是将其添加到 db ( coll.insert(data)) 时,在 15% 的 cpu 使用情况下一切运行良好。

我在 mongostats 中看到的:

  • res不断攀升。(虽然堵塞可能发生在 40m 并且在 100m 上运行良好。)
  • flushes似乎不干涉。
  • locked %稳定在 0.1%。这最终会导致堵塞吗?

(我正在运行 AWS 微实例;pymongo。)

4

1 回答 1

1

我建议在运行测试时使用 mongostat。有很多事情可能是错误的,但 mongostat 会给你一个很好的指示。

http://docs.mongodb.org/manual/reference/mongostat/

我要看的前两件事是锁定百分比和数据吞吐量。在专用机器上具有合理的吞吐量,我通常会在遭受任何降级之前达到每秒 1000-2000 次更新/插入。我曾经使用过的几个大型生产部署就是这种情况。

于 2012-10-03T01:22:22.583 回答