MongoDB使用150 MB内存是否理想?

时间:2011-02-07 05:57:26

标签: mongodb mongodb-php

这是我使用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();

的输出

注意 - 我在运行db.serverStatus();之前重启了mongod,内存使用量为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
}

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

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

谢谢大家。

2 个答案:

答案 0 :(得分:10)

“使用”那么多内存并不像看起来那么糟糕...... MongoDB会(至少看起来)耗尽大量可用内存,但是它会让操作系统的VMM告诉它发布需要时的记忆。 (请参阅MongoDB文档中的Caching。)

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

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

然而,在某种程度上,MongoDB并没有真正主动“使用”内存......请继续阅读本文中的更多细节。

How to release the caching which is used by Mongodb?

答案 1 :(得分:6)

内存管理 soley 直到操作系统。

阅读

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

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