mongoDB中的高插入时间
我们有一个集合,它从几个(3)UDP服务器获取一个条目并将其放入mongodb 我已经开始检查mongodb上的配置文件,并看到有一段时间(大多数情况下都很好)我的插入速度很高(~5000) nodejs上的另一个组件的Cronjob中有一些MapReduce操作 我可以注意到在同一时间有很多(50~)的插入操作 该集合上有2个索引,每隔几秒钟,它的大部分文档都会被删除,所以它的索引不会超过50个。该系列没有封顶 MongoDB版本是2.4.6 这是什么原因造成的? 在不同集合上同时运行的MapReduce会是原因吗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
{
"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在整个网站上做一些操作,这需要很多时间。这里有很多可能的问题-我认为这些是主要的问题:
您没有提到您试图解决的问题类型,但是如果以相同的插入速率删除数据,那么数据库可能不是最适合您的问题的 一,。我认为书面关注点默认为已确认,2。我需要确定我已经看了一个条目,我认为考虑另一个模型是个好主意。3.我认为是EBS而不是SSD。4.我同意。我的主要问题是,为这些参数获得如此高的时间是否合理