Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 插入mongodb(pymongo)时的效率_Python_Mongodb_Performance_Pymongo_Database - Fatal编程技术网

Python 插入mongodb(pymongo)时的效率

Python 插入mongodb(pymongo)时的效率,python,mongodb,performance,pymongo,database,Python,Mongodb,Performance,Pymongo,Database,为清晰起见进行了更新:在插入/附加到封顶集合时,我需要性能建议。我运行了两个python脚本: (1) 跟踪光标 while WSHandler.cursor.alive: try: doc = WSHandler.cursor.next() self.render(doc) (2) 这样插入: def on_data(self, data): #Tweepy if (len(da

为清晰起见进行了更新:在插入/附加到
封顶集合时,我需要性能建议。我运行了两个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%),再也无法恢复。我的猫鼬会跳水(跳水动作如下图所示)

Mongostat输出:

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

当我使用
print(data)
运行上面的两行代码时,而不是将其添加到db(
coll.insert(data)
),在15%的cpu使用率下,一切都正常运行

我在mongostats看到的是:

  • res
    不断攀升。(虽然障碍可能发生在40米处,也可能发生在100米处。)
  • 刷新
    似乎不会产生干扰
  • locked%
    稳定在0.1%。这最终会导致堵塞吗

(我正在运行AWS microinstance;pymongo。)

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


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

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



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

您在其他地方获得了什么样的性能?我从来没有听说过任何关于AWS micros性能的正面消息。没有在其他地方检查过,目前也没有这样做的能力。事实上,它大部分时间都运转良好,但时不时会堵塞——而当它堵塞时,就是给水管打水的时候了,没有别的事可做了/可能您的集合缺少索引。db.coll.stats()的输出是什么?它没有索引,因为它是一个有上限的集合(用于可定制的游标)。尽管我们已经有了答案,但我想在mongostat输出上进行扩展。1) res是驻留内存,在插入和查询时,它应该上升。我有一些实例以每秒%的速率与千兆字节同步运行,因此50%意味着db/集合被写锁定了500毫秒。db或集合锁定取决于mongo的版本。您在其他地方可以获得什么样的性能?我从来没有听说过任何关于AWS micros性能的正面消息。没有在其他地方检查过,目前也没有这样做的能力。事实上,它大部分时间都运转良好,但时不时会堵塞——而当它堵塞时,就是给水管打水的时候了,没有别的事可做了/可能您的集合缺少索引。db.coll.stats()的输出是什么?它没有索引,因为它是一个有上限的集合(用于可定制的游标)。尽管我们已经有了答案,但我想在mongostat输出上进行扩展。1) res是驻留内存,在插入和查询时,它应该上升。我有一些实例以每秒%的速率与千兆字节同步运行,因此50%意味着db/集合被写锁定了500毫秒。db或集合锁定取决于mongo的版本。谢谢,我添加了mongostats。令我惊讶的是,它似乎运行得相当平稳,但可能我没有读对它?有趣的是,插入峰值为180次插入/秒,然后回落到每秒15-20次插入-尽管在峰值期间几乎没有锁定。峰值吞吐量约为500k。我想知道是否真的是Tweepy以这样的吞吐量阻塞了CPU?而且,mongostats中的
res
不断增加。可能是因为我碰到了“屋顶”,从而堵塞了启动?我把Tweepy换成了另一个客户-似乎已经解决了这个问题。谢谢,很高兴听到!我对python或那个特定的客户机不太了解,更不用说我当时正在睡觉=),所以我很高兴你能理解这一点。谢谢,我添加了mongostats。令我惊讶的是,它似乎运行得相当平稳,但可能我没有读对它?有趣的是,插入峰值为180次插入/秒,然后回落到每秒15-20次插入-尽管在峰值期间几乎没有锁定。峰值吞吐量约为500k。我想知道是否真的是Tweepy以这样的吞吐量阻塞了CPU?而且,mongostats中的
res
不断增加。可能是因为我碰到了“屋顶”,从而堵塞了启动?我把Tweepy换成了另一个客户-似乎已经解决了这个问题。谢谢,很高兴听到!我对python或那个特定的客户机不太了解,更不用说我当时正在睡觉=),所以我很高兴您能够理解这一点。