【发布时间】:2013-08-04 11:34:06
【问题描述】:
我在 Amazon EC2 上安装了 MongoDB 2.4.4,带有 ubuntu 64 位操作系统和 1.6 GB RAM。
在这台服务器上,只有 MongoDB 没有其他运行。
但有时 CPU 使用率达到 99% 并且平均负载:500.01、400.73、 620.77
我还在服务器上安装了彩信来监控服务器上的情况。
这是彩信详情
根据 MMS 详细信息,索引对每个查询都非常有效。
疑点详情如下
1) HIGH 非映射虚拟内存
2) 高页面错误
谁能帮助我了解导致 CPU 使用率高的确切原因?
编辑:
在@Dylan Tong 的cmets 之后,我减少了活跃的连接,但是 仍然有很高的非映射虚拟内存
【问题讨论】:
-
您打开了大量的连接。你在执行什么操作?
-
@DylanTong 一般有插入、更新、读取操作。我们使用 MongoDB 作为报告数据库。
-
大量的活动连接应该可以解释为什么你有这么多未映射的内存。此外,如果您有大约 13k 的活动连接在工作,那么我预计会有很多 CPU 使用率。听起来你的盒子在处理这种类型的负载时并不是很强大。奇怪的是,您的 opcounters 仪表板在可见时间范围内显示的操作很少。预计有 13k 活动连接吗?您有多少个客户端/线程以及配置的连接池大小是多少?您是否正在关闭应用程序中的光标?
-
另外你有大量页面错误的原因是因为你只有1.6GB。 Unbuntu 最多可能会留给您 1.3G,而您的大型连接堆栈正在用完一大块。因此,常驻内存中的文档数量会减少,从而导致页面错误。
-
我不熟悉这些驱动程序,但我怀疑您应该在代码中显式调用 cursor.close() (请注意,有一个等效的活动游标 # 作为连接),或者您有一些代码无意中创建了一些极端并发(异步代码?)。后者似乎不太可能,因为您需要大量的客户端和线程来实现 13k。最后,升级到最新的驱动程序可能会有所帮助。可能存在我不知道的驱动程序问题。
标签: ruby-on-rails-3 mongodb amazon-ec2 ubuntu-12.04