7

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

在这台服务器上,只有 MongoDB 没有运行其他任何东西。

但有时 CPU 使用率达到 99% 和平均负载:500.01、400.73、620.77

我还在服务器上安装了 MMS 以监控服务器上发生的事情。

这是彩信详细信息在此处输入图像描述

根据 MMS 详细信息,索引对每个查询都非常有效。

疑点详情如下

1) HIGH 非映射虚拟内存

2) 高页面错误

任何人都可以帮助我了解导致 CPU 使用率高的确切原因吗?

编辑:

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

在此处输入图像描述

4

1 回答 1

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 仍然处于上限,那么这意味着您需要增加您的资源。

于 2013-08-04T03:26:52.580 回答