MongoDB 内存使用
都说 MongoDB 是个内存大户,但是怎么知道它到底用了多少内存呢? 先 ps 一下看看。 $ ps aux|grep mongodmongo 26994 9.0 20.0 797264324 13243052 ? Sl May16 117:03 /path/to/mongodb/bin/mongod 总共 760G 多的虚拟内存,但是物理内存就只有 12.6G 。这
都说 MongoDB 是个内存大户,但是怎么知道它到底用了多少内存呢?
先 ps 一下看看。
$ ps aux|grep mongod mongo 26994 9.0 20.0 797264324 13243052 ? Sl May16 117:03 /path/to/mongodb/bin/mongod
总共 760G 多的虚拟内存,但是物理内存就只有 12.6G 。这个机器可是有 64G 内存的哦,这看起来 MongoDB 完全没用多少内存嘛。
再看看 free 的结果。
$ free -m total used free shared buffers cached Mem: 64544 64279 265 0 134 60413 -/+ buffers/cache: 3731 60813 Swap: 31999 0 31999
内存倒是占得差不多了,基本都是 cached ,也就是文件系统缓存。MongoDB 是通过 mmap 方式让操作系统来处理持久化和缓存的。每个数据文件都直接映射到某个虚拟内存地址。访问的时候如果这一页不在内存中,系统就会尝试把这一页加载进来。这些内存都是算进 cache 里的。在 mongodb 的官方文档里有这样一个说法,top 或 ps 里的 RSIZE 段显示的是机器的全部内存大小,因为 mongodb 会尽可能占用全部内存。但是事实上,这些缓存并没有算在里面。因此在 top 或 ps 中是看不出 MongoDB 的实际内存使用情况的。而 free 虽然可以看到系统的内存使用情况,但是没法确定这些内存里究竟有多少真的是 MongoDB 使用的。
还好有人做了 vmtouch 这个工具。可以检查文件在缓存中的情况,另外也可以把文件直接加载进缓存或者踢出去。只需要对 MongoDB 的所有数据文件检查一下缓存加载情况,就可以知道 MongoDB 到底缓存了多少数据了。
$ vmtouch -m4G /path/to/mongodb/data/ Files: 256 Directories: 3 Resident Pages: 15465901/100219772 58G/382G 15.4% Elapsed: 4.072 seconds
这里 -m4G 是 vmtouch 检查的文件大小限制。MongoDB 的数据文件比较大,通常会超过默认的 500M。这样看来,缓存用了 58G,这还差不多。Resident Pages 左侧的数字是页的数量,页的数量乘以文件系统页大小才是内存使用量。页的大小可以通过
getconf PAGESIZE
查看,通常是 4096,也就是 4KB。
MongoDB 在 NUMA 的机器上运行,并且内存被固定到一个 node 的时候,会有一个警告
WARNING: You are running on a NUMA machine. We suggest launching mongod like this to avoid performance problems: numactl –interleave=all mongod [other options]
也许是认为,这种情况下只能用上一个节点的内存。但 MongoDB 的缓存是由操作系统管理的。NUMA 似乎对此并没有影响。而内存不太小的时候 MongoDB 本身很难用掉一个节点的内存。这种情况下,是否开启 numactl –interleave=all 作用已经不大了。能做的也许只能是加内存,sharding,或者换 ssd 了。
原文地址:MongoDB 内存使用, 感谢原作者分享。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

本站9月3日消息,韩媒etnews当地时间昨日报道称,三星电子和SK海力士的“类HBM式”堆叠结构移动内存产品将在2026年后实现商业化。消息人士表示这两大韩国内存巨头将堆叠式移动内存视为未来重要收入来源,计划将“类HBM内存”扩展到智能手机、平板电脑和笔记本电脑中,为端侧AI提供动力。综合本站此前报道,三星电子的此类产品叫做LPWideI/O内存,SK海力士则将这方面技术称为VFO。两家企业使用了大致相同的技术路线,即将扇出封装和垂直通道结合在一起。三星电子的LPWideI/O内存位宽达512

本站8月12日消息,韩媒ETNews报道称,三星电子内部已确认在平泽P4工厂建设1cnmDRAM内存产线的投资计划,该产线目标明年6月投入运营。平泽P4是一座综合性半导体生产中心,分为四期。在早前规划中,一期为NAND闪存,二期为逻辑代工,三期、四期为DRAM内存。三星已在P4一期导入DRAM生产设备,但搁置了二期建设。而1cnmDRAM是第六代20~10nm级内存工艺,各家的1cnm(或对应的1γnm)产品目前均尚未正式发布。韩媒在报道中称,三星电子计划在今年底启动1cnm内存生产。▲三星平泽

本站7月26日消息,七彩虹宣布推出iGame“甲辰智龙”系列内存,可与先前推出的龙年限定系列板卡搭配使用。该系列内存首发提供48GB(24G×2)DDR5-6800(CL34)套装,采用“龙鳞”散热马甲,支持“龙腾”RGB灯效,京东显示为1399元。据介绍,该系列内存外观设计采用了中国传统色“蒸栗”和“缣缃”,正面为“祥云”和“御风”,背面则是“甲辰智龙”图腾,另外还用金边作为整体修饰,搭配寓意着“节节高升”的层次感导光件。该系列内存采用了SK海力士原厂臻选颗粒,主频可达6800MT/s,支持X

本站8月14日消息,综合韩媒《首尔经济日报》(上月29日)《朝鲜日报》(本月13日)报道,SK海力士已向上游设备企业订购关键设备,目标提升M16晶圆厂的HBM和通用DRAM内存产能。本站注:SK海力士M16晶圆厂位于韩国京畿道利川市,目前拥有每月约10万片12英寸晶圆的DRAM产能。▲SK海力士利川园区两家韩媒对具体扩产幅度的报道略有差异:《首尔经济日报》认为是至少每月7万片晶圆,也提到了每月8万片;《朝鲜日报》则认为是每月8万~10万片晶圆。分析机构Omdia此前预估,SK海力士DRAM内存产

本站8月16日消息,各大厂商此前基本都已经推出自家CAMM2内存,例如微星、华擎、华硕6月还在台北电脑展上公布了支持CAMM2内存的特别款英特尔主板。随着台式电脑开始支持CAMM2内存,微星官方今日发布了一段视频,为大家介绍了该平台的优势所在。相比于传统的SO-DIMM内存模块,CAMM2内存拥有更短的走线,从而带来了更高的信号完整性、更快的速度、更低的延迟、更酷更新的设计。除此之外,CAMM2优势还在于它只需要使用一个PMIC(SO-DIMM中每个模块都有自己的PMIC),从而实现了功耗和发热

本文介绍如何在Debian系统上配置MongoDB实现自动扩容,主要步骤包括MongoDB副本集的设置和磁盘空间监控。一、MongoDB安装首先,确保已在Debian系统上安装MongoDB。使用以下命令安装:sudoaptupdatesudoaptinstall-ymongodb-org二、配置MongoDB副本集MongoDB副本集确保高可用性和数据冗余,是实现自动扩容的基础。启动MongoDB服务:sudosystemctlstartmongodsudosys

本文介绍如何在Debian系统上构建高可用性的MongoDB数据库。我们将探讨多种方法,确保数据安全和服务持续运行。关键策略:副本集(ReplicaSet):利用副本集实现数据冗余和自动故障转移。当主节点出现故障时,副本集会自动选举新的主节点,保证服务的持续可用性。数据备份与恢复:定期使用mongodump命令进行数据库备份,并制定有效的恢复策略,以应对数据丢失风险。监控与报警:部署监控工具(如Prometheus、Grafana)实时监控MongoDB的运行状态,并

本站8月20日消息,据韩媒MK报道,SK海力士负责HBM内存业务的副总裁RyuSeong-soo当地时间昨日在SK集团2024年度利川论坛上表示,M7科技巨头都表达了希望SK海力士为其开发定制HBM产品的意向。本站注:M7即Magnificent7,指美股七大科技巨头苹果、微软、Alphabet(谷歌)、特斯拉、英伟达、亚马逊以及Meta。RyuSeong-soo提到其在周末仍不断工作,与M7企业进行电话沟通,并为满足这些企业的需求四处奔波以整合SK海力士内部和韩国各地供应链企业的工程资源。这位
