6

这是我第一个使用 MongoDB 的项目。

我已经将它托管在一个 linode(一个使用 XEN 的 VPS)上,并且我正在使用“top”检查内存使用情况。

mongod 进程似乎使用了大约 150 MB 的内存。当我检查时,它没有任何联系。我使用 RockMongo 来管理它。我的主要数据库统计数据是 -

Size - 464m 
Storage Size - 83.99m
Data Size - 66.4m
Index Size - 49.33m
Collections - 5
Objects - 584850

当 cron 作业运行时会发生很多查询,大约每分钟 75 次甚至更多。但是,正如我之前所说,当我检查内存使用情况时,没有任何连接。

的输出db.serverStatus();

注意 - 我在运行之前重新启动了 mongod db.serverStatus();,内存使用量为 40 MB。

{
   "retval": {
     "version": "1.6.5",
     "uptime": 790,
     "uptimeEstimate": 783,
     "localTime": "Mon, 07 Feb 2011 00: 51: 04 -0500",
     "globalLock": {
       "totalTime": 790027671,
       "lockTime": 376381,
       "ratio": 0.00047641495838188,
       "currentQueue": {
         "total": 0,
         "readers": 0,
         "writers": 0
      }
    },
     "mem": {
       "bits": 64,
       "resident": 38,
       "virtual": 957,
       "supported": true,
       "mapped": 288
    },
     "connections": {
       "current": 2,
       "available": 9598
    },
     "extra_info": {
       "note": "fields vary by platform",
       "heap_usage_bytes": 152448,
       "page_faults": 0
    },
     "indexCounters": {
       "btree": {
         "accesses": 1,
         "hits": 1,
         "misses": 0,
         "resets": 0,
         "missRatio": 0
      }
    },
     "backgroundFlushing": {
       "flushes": 13,
       "total_ms": 1,
       "average_ms": 0.076923076923077,
       "last_ms": 0,
       "last_finished": "Mon, 07 Feb 2011 00: 50: 54 -0500"
    },
     "cursors": {
       "totalOpen": 0,
       "clientCursors_size": 0,
       "timedOut": 0
    },
     "opcounters": {
       "insert": 0,
       "query": 57,
       "update": 0,
       "delete": 0,
       "getmore": 0,
       "command": 46
    },
     "asserts": {
       "regular": 0,
       "warning": 0,
       "msg": 0,
       "user": 0,
       "rollovers": 0
    },
     "ok": 1
  },
   "ok": 1
}

我的一个朋友在具有相同数量的 ram (1024 MB) 的 linode 上运行他的 WordPress 博客。他的 MySQL 使用率仅为 20.48 左右。12 个用户在他的网站上就像“永远在线”(就像永远在线一样)。

这让我觉得 MongoDB 对我来说不是一个不错的选择,我应该坚持使用 MySQL!

谢谢你们。

4

2 回答 2

11

“使用”这么多内存并不像看起来那么糟糕...... MongoDB 将(至少似乎)用完大量可用内存,但它留给操作系统的 VMM 来告诉它何时释放内存需要。(请参阅MongoDB 文档中的缓存。)

在大多数情况下,它“使用”该内存进行缓存,这大大加快了速度。

您应该能够通过重新启动 MongoDB 来释放所有内存。

但是,在某种程度上,MongoDB 并没有真正积极地“使用”内存……请继续阅读此 anwser 中的更多详细信息……

如何释放 Mongodb 使用的缓存?

于 2011-02-07T06:07:01.503 回答
7

内存管理完全取决于操作系统。

http://blog.mongodb.org/post/101911655/mongo-db-memory-usage

现在基本上没有办法影响内存使用......并提到:了解内存映射文件,不要将内存映射文件的内存使用与实际内存使用混为一谈。

于 2011-02-07T06:40:14.003 回答