mongodb高CPU使用率

GBD*_*GBD 5 amazon-ec2 mongodb ruby-on-rails-3 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来监控服务器上发生了什么.

这是彩信细节 在此输入图像描述

根据MMS详细信息,索引可以完美地为每个查询工作.

怀疑详情如下

1)高非映射虚拟内存

2)高页面错误

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

编辑:

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

在此输入图像描述

Dyl*_*ong 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/development-notes/)。生产说明建议 32(对于标准 512 字节块)。有时,如果您的文档较大,则较高的值是最佳选择。希望驻留内存应该接近您的可用内存,并且页面错误应该开始减少。

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