从文档中,它说
“为了获得最佳性能,您的大部分活动集应该适合 RAM。”
例如,我db.stats()
给我
{
"db" : "mydb",
"collections" : 16,
"objects" : 21452,
"avgObjSize" : 768.0516501957859,
"dataSize" : 16476244,
"storageSize" : 25385984,
"numExtents" : 43,
"indexes" : 70,
"indexSize" : 15450112,
"fileSize" : 469762048,
"ok" : 1
}
Run Code Online (Sandbox Code Playgroud)
哪个值是working set size
?
Ada*_*m C 10
评论中 quanta 链接的SO 问题/答案是正确的,“工作集”基本上是您的系统将处于活动状态/正在使用的数据量和索引。
db.stats()
除非您认为您需要在 RAM 中拥有整个数据集和整个索引,否则您无法判断这将是什么。也就是说,您可以计算出该数据库的最大工作集,但不能计算出实际的活动工作集。最大值是以下各项的总和:
在您的情况下,考虑到您粘贴的输出,该最大值约为 30.45 MiB。
为了跟踪实际内存使用情况,我建议结合使用db.stats()
免费监控工具MMS 中提供的数字和内存图(特别是常驻内存)。
更新 (04/08/2013):
2.4 版在serverStatus 命令中添加了一个工作集大小估计器- 这只是一个估计值,但它可以用作指南并检查上面的其他数字和估计值是否对您的 MongoDB 实例有意义。
更新(2016 年 9 月):
从我最初的答案开始三年了,事情要复杂得多 - 通常获取数据和索引的大小仍然是一个很好的起点。但是,在 MongoDB 中解决问题现在将取决于您使用的存储引擎。此外,版本 3.0 删除了上面链接的 MMAP 工作集估计器,作为集合级别锁定工作的一部分(请参阅SERVER-13783)。现在有(例如)的缓存统计数据的WiredTiger
引擎作为替代假设你已经做了跃迁到新的引擎。对于MMAP
,一般建议是将页面错误指标视为您的数据是否适合内存的代理。
归档时间: |
|
查看次数: |
8023 次 |
最近记录: |