Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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
mongoDB中的高插入时间_Mongodb_Python 2.7_Pymongo - Fatal编程技术网

mongoDB中的高插入时间

mongoDB中的高插入时间,mongodb,python-2.7,pymongo,Mongodb,Python 2.7,Pymongo,我们有一个集合,它从几个(3)UDP服务器获取一个条目并将其放入mongodb 我已经开始检查mongodb上的配置文件,并看到有一段时间(大多数情况下都很好)我的插入速度很高(~5000) nodejs上的另一个组件的Cronjob中有一些MapReduce操作 我可以注意到在同一时间有很多(50~)的插入操作 该集合上有2个索引,每隔几秒钟,它的大部分文档都会被删除,所以它的索引不会超过50个。该系列没有封顶 MongoDB版本是2.4.6 这是什么原因造成的? 在不同集合上同时运行的Map

我们有一个集合,它从几个(3)UDP服务器获取一个条目并将其放入mongodb

我已经开始检查mongodb上的配置文件,并看到有一段时间(大多数情况下都很好)我的插入速度很高(~5000)

nodejs上的另一个组件的Cronjob中有一些MapReduce操作

我可以注意到在同一时间有很多(50~)的插入操作

该集合上有2个索引,每隔几秒钟,它的大部分文档都会被删除,所以它的索引不会超过50个。该系列没有封顶

MongoDB版本是2.4.6

这是什么原因造成的? 在不同集合上同时运行的MapReduce会是原因吗

   {
        "allUsers": [],
        "client": "127.0.0.1",
        "keyUpdates": 0,
        "lockStats": {
            "timeAcquiringMicros": {
                "r": 0,
                "w": 10
            },
            "timeLockedMicros": {
                "r": 0,
                "w": 45
            }
        },
        "millis": 9527,
        "ninserted": 1,
        "ns": "dbname.hits",
        "numYield": 0,
        "op": "insert",
        "ts": {
            "$date": 1418186296785
        },
        "user": ""
    },
    {
        "allUsers": [],
        "client": "127.0.0.1",
        "keyUpdates": 0,
        "lockStats": {
            "timeAcquiringMicros": {
                "r": 0,
                "w": 8
            },
            "timeLockedMicros": {
                "r": 0,
                "w": 35
            }
        },
        "millis": 9396,
        "ninserted": 1,
        "ns": "dbname.hits",
        "numYield": 0,
        "op": "insert",
        "ts": {
            "$date": 1418186296785
        },
        "user": ""
    },
    {
        "allUsers": [],
        "client": "127.0.0.1",
        "keyUpdates": 0,
        "lockStats": {
            "timeAcquiringMicros": {
                "r": 0,
                "w": 6
            },
            "timeLockedMicros": {
                "r": 0,
                "w": 29
            }
        },
        "millis": 9257,
        "ninserted": 1,
        "ns": "dbname.hits",
        "numYield": 0,
        "op": "insert",
        "ts": {
            "$date": 1418186296785
        },
        "user": ""
    },
    {
        "allUsers": [],
        "client": "127.0.0.1",
        "keyUpdates": 0,
        "lockStats": {
            "timeAcquiringMicros": {
                "r": 0,
                "w": 7
            },
            "timeLockedMicros": {
                "r": 0,
                "w": 65
            }
        },
        "millis": 8768,
        "ninserted": 1,
        "ns": "dbname.hits",
        "numYield": 0,
        "op": "insert",
        "ts": {
            "$date": 1418186296785
        },
        "user": ""
    },
    {
        "allUsers": [],
        "client": "127.0.0.1",
        "keyUpdates": 0,
        "lockStats": {
            "timeAcquiringMicros": {
                "r": 0,
                "w": 22
            },
            "timeLockedMicros": {
                "r": 0,
                "w": 62
            }
        },
        "millis": 8566,
        "ninserted": 1,
        "ns": "dbname.hits",
        "numYield": 0,
        "op": "insert",
        "ts": {
            "$date": 1418186296786
        },
        "user": ""
    },
    ...
更新1:

我试图解决的问题是:

我们从一些服务器上得到一些匹配数据流的点击,如果它们之间的差异为MAX_DIFF,我需要将它们聚合为一个[开始,结束]元组。 例如:

{name:A, time:0, stream:A_1}
{name:A, time:7, stream:A_1}
{name:A, time:15, stream:A_1}
{name:A, time:26, stream:A_1}

MAX_DIFF= 10
我将聚合到另一个集合:

{name:A, stream:A_1, time_begin:0, time_end:15}
{name:A, stream:A_1, time_begin:26, time_end:26}
更新2: 在对概要文件进行一些检查之后,似乎MapReduce是罪魁祸首,在最后阶段使用了它的全局写锁。
我让MR在整个网站上做一些操作,这需要很多时间。

这里有很多可能的问题-我认为这些是主要的问题:

  • MongoDB在写入期间锁定整个数据库。由于写入次数太多,数据库将在大多数时间被锁定。您在写作中使用的写作关注点是什么

  • 常量删除。经常删除数据通常是个坏主意。您是否可以重新建模数据以避免不断删除?另外,索引只有50个文档,这是浪费时间

  • 储藏室。您没有提到您使用的是哪种存储,但MongoDB非常喜欢SSd

  • 与2.4相比,2.6有了很大的改进,因此您应该真正考虑升级


  • 您没有提到您试图解决的问题类型,但是如果以相同的插入速率删除数据,那么数据库可能不是最适合您的问题的

    一,。我认为书面关注点默认为已确认,2。我需要确定我已经看了一个条目,我认为考虑另一个模型是个好主意。3.我认为是EBS而不是SSD。4.我同意。我的主要问题是,为这些参数获得如此高的时间是否合理