好吧,所以我正在构建一个基于Node.js的应用程序,我正在使用mongoose来处理我与mongodb的连接。我的端点是这样的:
getTestStream : function(req, res, conditions, callback) {
Activity.find()
.limit(1000)
.run(function(err, activities) {
if (err){
util.sendError(req, res, "Query Error", err);
} else if (activities) {
res.send(activities);
} else {
util.send('nope');
}
});
}
由于某种原因,此调用需要700毫秒+才能完成。即使没有应用mongodb shell的限制,相同的调用也会在大约4ms内返回。这看起来像是一个简单的查询,那么是什么让它减慢了这么多?我猜我错过了配置中某些显而易见的东西,但我不知道。
感谢任何可以提供帮助的人。
其他信息:
mongoose@2.6.0
mongodb@2.0.4
node@0.6.9
答案 0 :(得分:9)
经过一段时间的实验,我发现了一些缓慢的贡献,希望这有助于任何有类似问题的人:
使用这些技术,我现在可以在比以前处理1000的时间更短的时间内处理4000条记录。感谢所有评论的人,特别感谢Gates VP指出猫鼬不适合这种电话。
答案 1 :(得分:0)
同样的调用甚至没有应用mongodb shell的限制返回大约4ms。
默认情况下,shell会应用30左右的限制。 尝试从具有实际限制的shell进行操作?
此外,您可能希望从命令行管理程序中尝试.explain()
。
如果这些都不起作用,那么你可以采取@Kyle Banker的建议并查看the profiler。
答案 2 :(得分:-1)
结帐ensureIndex 这将加快您的搜索速度