Mongodb 占用99%CPU并且查询速度很慢原因查找笔记。

来源:互联网 发布:adobe cc 2015 mac 编辑:程序博客网 时间:2024/04/28 03:46

最近一直在用Mongodb,因为只是小项目,所以了解的不是很深入,并且只期望够用就没有进行深入研究。


但是,最近把Mongodb迁移了机器之后,发现特别慢,而且Mongodb 一直占据99%的CPU, 于是就开始了下面的纠结旅程。


网上查了好久, 有的说是因为Mongodb部署在NUMA的机器上会有CPU分配策略问题,(详见http://www.cnblogs.com/Lifehacker/p/database_swap_insanity_on_Linux.html)

我查看Mongodb的log,发现在Mongodb启动时,log确实有记录关于NUMA的warn, 如下。


但是当我按要求加上numactl重启数据库后,发现情况并未改变。

后来,网上又看到有人讲可能是因为Mongodb.lock文件导致数据库试图不停重启服务。(详见http://stackoverflow.com/questions/10747580/mongodb-service-at-100-cpu)


后来我删掉Mongodb.lock文件并进行修复, Mongodb --repair。  但修复之后,数据库速度并未明显提升,  Mongodb依然占据超高CPU。

在我快崩溃的时候,看到有大牛讲,Mongodb不能和redis部署在同一个机器上,否则Mongodb会吃掉redis的所有内存。(详见http://stackoverflow.com/questions/10696463/mongodb-with-redis)


但是我停掉机器上的redis后,发现情况依然没有改观!


------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

然后我重新看了《Mongodb权威指南》, 然后想起,因为程序有将近40个线程一直在不停的查询数据库并插入, 而我竟然没有在数据库中建索引, so。。。。。。

数据库不停翻书,翻书,翻书。。。。。。。。。。 然后抽插,抽查。。。。。。

然后我建立索引:


Mongodb的CPU使用率瞬间降下来了,并且速度超快,抽查也顺利起来了。


0 0