日期:2014-05-16 浏览次数:20433 次
这两天连mongodb的服务器老是有问题,打开任务管理器一看,内网的带宽打的是相当的高,服务器上只有调mongodb的页面,调mongodb走的是内网,所以应该是mongodb传输的数据量太大的问题,因为当连接数只有30个左右的时候,mongostat里的netout居然仍然有4M、5M左右,这个也太夸张了,于是仔细排查了下项目的代码,终于找到了问题的症结。
修改前:
documnetFilterResult = collection.Find(filterDocument).Sort("Date", IndexOrder.Descending).Documents.Take(60).ToList<Document>();
修改后:
documnetFilterResult = collection.Find(filterDocument).Sort("Date", IndexOrder.Descending).Limit(60).Documents.ToList<Document>();
两者乍一看没什么区别,都是按照日期排好序然后取前60条,但是却有本质的区别:
修改前的代码查询mongodb的操作是collection.Find(filterDocument).Sort("Date", IndexOrder.Descending).Documents
修改后的代码查询mongodb的操作是collection.Find(filterDocument).Sort("Date", IndexOrder.Descending).Limit(60).Documents
可以看出,修改前的代码要比修改后的代码的查询结果要大的多(修改前是全部,修改是全部中的前60条),虽然修改前的最后也做了条数限制,但是是得到数据后再处理的。