4

我最近试图对我的 mongodb 服务器进行基准测试,我猜它们有点过载,这是 serverStatus() 的结果:

SECONDARY> db.serverStatus().mem
{
    "bits" : 64,
    "resident" : 26197,
    "virtual" : 161106,
    "supported" : true,
    "mapped" : 79994,
    "mappedWithJournal" : 159988
} 

所以如果我理解正确的话,MongoDB 正在使用 26GB 的内存。如果我的服务器有 32GB,并且它只运行 mongoDb,那么获得一个新服务器并将我的数据分片是个好主意??

4

2 回答 2

5

MongoDB 缓存的工作方式最终将使用任何可用的内存。当驻留部分与总内存发生冲突时,性能会显着下降,但这取决于您的数据访问模式。如果不是所有内容一直都在内存中,这通常没关系,但您希望为工作集留出空间。有关一般建议和详细信息,请参阅工作集大小serverStatus().mem 。

于 2012-08-12T01:55:49.077 回答
3

Joshua 所说的一切都有一个警告,你要始终确保启用了一些交换。否则您可能会遇到 OOM Killer 问题,请参见此处:

http://www.mongodb.org/display/DOCS/The+Linux+Out+of+Memory+OOM+Killer

基本上,拥有足够数据的繁忙 MongoDB 将趋向于最大内存使用率,然后保持在那里。这本身并不表示问题,并且通常正是应该发生的事情。您应该寻找 其他地方诊断任何性能问题的根源。

于 2012-08-13T16:57:56.640 回答