这是我使用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!
谢谢大家。
答案 0 :(得分:10)
“使用”那么多内存并不像看起来那么糟糕...... MongoDB会(至少看起来)耗尽大量可用内存,但是它会让操作系统的VMM告诉它发布需要时的记忆。 (请参阅MongoDB文档中的Caching。)
在大多数情况下,它“使用”内存用于缓存,这大大加快了速度。
您应该可以通过重新启动MongoDB来释放所有内存。
然而,在某种程度上,MongoDB并没有真正主动“使用”内存......请继续阅读本文中的更多细节。
答案 1 :(得分:6)
内存管理 soley 直到操作系统。
阅读
http://blog.mongodb.org/post/101911655/mongo-db-memory-usage
现在基本上没有办法影响内存使用....并提到:了解内存映射文件,不要将内存映射文件的内存使用量与实际内存使用量混淆。