我已经在Amazon EC2上使用ubuntu 64位操作系统和1.6 GB RAM安装了MongoDB 2.4.4。
在此服务器上,只有MongoDB不运行任何其他内容。
但有时CPU使用率达到99%且负载平均值:500.01,400.73, 620.77
我还在服务器上安装了MMS来监控服务器上发生了什么。
以下是彩信详情
根据MMS详细信息,索引可以完美地用于每个查询。
怀疑详情如下
1)HIGH非映射虚拟内存
2)HIGH页面错误
任何人都可以帮助我了解究竟是什么原因导致高CPU使用率?
修改
在@Dylan Tong评论之后,我减少了主动连接但是 还有很高的非映射虚拟内存
答案 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上工作,那么这意味着您需要增加资源。