mongodb高CPU使用率

时间:2013-08-03 05:43:47

标签: ruby-on-rails-3 mongodb amazon-ec2 ubuntu-12.04

我已经在Amazon EC2上使用ubuntu 64位操作系统和1.6 GB RAM安装了MongoDB 2.4.4。

在此服务器上,只有MongoDB不运行任何其他内容。

  

但有时CPU使用率达到99%且负载平均值:500.01,400.73,   620.77

我还在服务器上安装了MMS来监控服务器上发生了什么。

以下是彩信详情enter image description here

  

根据MMS详细信息,索引可以完美地用于每个查询。

     

怀疑详情如下

     

1)HIGH非映射虚拟内存

     

2)HIGH页面错误

任何人都可以帮助我了解究竟是什么原因导致高CPU使用率?

修改

  

在@Dylan Tong评论之后,我减少了主动连接但是   还有很高的非映射虚拟内存

enter image description here

1 个答案:

答案 0 :(得分:4)

以下是一些需要研究的内容摘要:

<强> 1。观察了大量的连接和游标(13k):    - 修复:确保您的连接池是合适的。对于报告和您当前的请求率,您最多只需要几个连接。另外,我猜你有一个m1small实例,这意味着你只有1个核心。

<强> 2。查看查询和索引:    - 使用explain()运行查询,以观察查询的执行方式。正确的模型通常会导致查询仅提取非常少的文档和使用索引。

第3。记忆(紧凑和预读设置): - 充分利用记忆力。 1.6GB很低。检查你有多少可用内存,并将其与报告为常驻的内存进行比较。驻留内存不足的几个常见原因是碎片造成的。如果有大量文档在移动,更改大小等,则应运行compact命令对数据文件进行碎片整理。此外,糟糕的预读也会导致内存使用不当。检查您的预读设置(http://manpages.ubuntu.com/manpages/lucid/man2/readahead.2.html)。尝试以低值(http://docs.mongodb.org/manual/administration/production-notes/)开头的几个值。生产笔记推荐32(标准512字节块)。如果您的文档较大,有时更高的值是最佳的。希望驻留内存应该接近可用内存,并且页面错误应该开始降低。

如果您在此之后充分利用资源,并且您仍然在CPU上工作,那么这意味着您需要增加资源。