【问题标题】:MongoDB is using too much memoryMongoDB 使用了太多内存
【发布时间】:2012-02-05 22:30:20
【问题描述】:

我在 32 位 CentOS VPS 上使用 MongoDB,内存为 1GB。 它在大多数情况下都可以正常工作,但时不时会导致内存使用量激增并使我的服务器崩溃。

有没有办法防止这种情况发生,例如,通过限制 MongoDB 守护程序使用的内存和 CPU?

我正在考虑使用 ionice 运行 Mongo 守护程序并给予它低优先级,但我不确定这是否可行。

欢迎任何帮助或指点!

【问题讨论】:

  • 哇,有趣。您可能应该将其发布在 mongoDB 邮件列表中

标签: linux mongodb centos


【解决方案1】:

目前无法限制内存量。 MongoDB 使用memory-mapped file 机制来访问数据文件。因此,使用的内存量由系统控制。您接触的数据越多,您需要的 RAM 就越多。

【讨论】:

  • 由于使用了内存映射文件,MongoDB on 32-bit systems will be limited to about 2 gigabytes of data。您可能需要考虑为您的数据库使用 64 位计算机。
  • @dcrosta:是的,忘了说。
  • SergioTulentsev,dcrosta,感谢您的提示!这是一个预算有限的测试环境,但生产将在 64 位系统上比这个重得多,所以我想一旦我转移项目,问题就会得到解决(只要我在需要时添加更多硬件)
【解决方案2】:

我猜你也在同一台服务器上运行其他所有东西?

真的,运行 mongo 的最佳方式是将它放在自己的服务器上,这样 apache、mysql 等就不会跳起来干扰它想要使用的 RAM。我自己也遇到过同样的问题——服务器会偶尔进入交换状态并自行阻塞,而且使用量很大。

您最好使用两台 512MB 的服务器,希望价格相当(一台运行 mongo,一台运行其余服务器)。我还考虑过尝试在 VPS 中运行带有 mongo 的 VM,但这对我来说属于“太多努力”的范畴。

是的,正如 dcrosta 所说,使用 64 位,除非您想将数据大小限制在 2GB 以下(为什么要这样做?)

【讨论】:

  • 嘿,韦斯,谢谢。该服务器用于开发,因此不幸的是没有复杂设置的预算,但生产环境会更重,所以我读到的问题应该在 64 位系统上修复一次!
【解决方案3】:

我确实遇到过类似的问题,当我使用大量的 map/reduce 时,内存泄漏和崩溃经常发生。我不再使用 map/reduce,而且已经好几个月没有内存泄漏/崩溃了。

【讨论】:

    猜你喜欢
    • 2017-06-18
    • 1970-01-01
    • 2015-12-03
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    • 2012-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多