0 mongodb
non-mapped virtual memory
我们 mongo 初级的统计数据一直是不变的,在昨天之前我们从未想过它。昨天,一个设计糟糕的查询的一系列意外的全集合扫描导致了很大的减速,该mongod
进程使用了 100% 的 CPU,每个查询都需要几十秒。
在将有问题的查询卸载到我们的辅助节点后,性能问题消失了,但非映射虚拟内存增加了一倍多,并且此后一直没有下降。它曾经保持在大约600MB
; 现在大约1.4GB
. 增长是立竿见影的,并且与放缓完全相关,此后它根本没有改变。
连接数自始至终都是完全恒定的,所以我们可以确定不是这样。
什么可能导致这种情况?这是个问题吗?我们应该担心吗?
在 EC2 实例上的 Ubuntu 12.04 64 位上运行。
答案是视情况而定,但这似乎不是问题,如果这是您看到的唯一行为,您不必太担心。
MongoDB 中的存储级别使用内存映射文件,因此使用的总虚拟内存可以是磁盘上所有数据库数据的大小。
系统上的常驻内存将代表 MongoDB 使用的实际工作集,并且根据您的使用/访问模式,它通常会随着时间的推移增长到您主机上的总物理 RAM。操作系统只会在它看到需要时将这些数据分页,否则它会保持原样(它对数据使用最近最少使用/LRU 和最少使用/LFR 方法)。由于 MongoDB 在虚拟内存空间中维护两个常驻内存视图,因此虚拟内存使用量将与此同步增长,其速度是常驻使用率的两倍多一点。
当 MongoDB 重新启动时,它会从头开始,并为您的工作数据集提供一个特定的时间框架,并定期、可预测地使用,您应该可以很好地表示您的工作集大小在 RAM 方面是多少。
MongoDB 的文档包含一些有助于描述它如何使用内存的进一步信息:http : //docs.mongodb.org/manual/faq/storage/#faq-storage-memory-mapped-files
MongoDB 存储层的更深层次的技术视图在这里呈现:http : //www.mongodb.com/presentations/understanding-mongodb-storage-performance-and-data-safety
归档时间: |
|
查看次数: |
1642 次 |
最近记录: |