我最近试图对我的mongodb服务器进行基准测试,我猜它们有点过载,这是serverStatus()的结果:
SECONDARY> db.serverStatus().mem
{
"bits" : 64,
"resident" : 26197,
"virtual" : 161106,
"supported" : true,
"mapped" : 79994,
"mappedWithJournal" : 159988
}
因此,如果我理解正确,MongoDB使用26GB的内存。如果我的服务器有32GB,并且它只运行mongoDb,那么获取新服务器并分割我的数据将是一个好主意?
答案 0 :(得分:5)
MongoDB缓存的工作方式最终会使用任何可用的内存。当驻留部分与总内存相冲突时,性能将显着下降,但将取决于您的数据访问模式。如果不是所有东西都在内存中通常都可以,但是你想为你的工作集留出空间。有关一般建议和详细信息,请参阅Working Set Size和serverStatus().mem。
答案 1 :(得分:3)
约书亚所说的一切都有一点需要注意,你要始终确保你已经启用了一些交换。否则你可能会遇到OOM Killer问题,请看这里:
http://www.mongodb.org/display/DOCS/The+Linux+Out+of+Memory+OOM+Killer
基本上,繁忙的MongoDB,有足够的数据将趋向于最大内存使用量,然后保持在那里。这并不表示问题本身,而且通常正是应该发生的事情。您应该look elsewhere到diagnose任何性能问题的来源。