`

限制MongoDB使用内存大小

阅读更多
限制MongoDB使用内存大小


因为MongoDB的内存是系统的虚拟内存管理的,MongoDB并不干涉内存管理工作,这样虽然可以简化Mongo的工作,但同时Mongo的内存使用是没法控制的。
真的没法控制?办法是有的,可以通过ulimit 来控制用户进程的虚拟地址空间的大小。
ulimit 是控制着所有进程的内存大小,怎么针对MongoDB进行控制呢? 其实可以变通的,我们在自己linux里使用一个用户来运行MongoDB,其它程序用其它用户进行运行。因为ulimit是可以限制指定用户资源的.

通过ulimit -a来查看所有可以修改的资源

118 ~ >>ulimit -a @root
-t: cpu time (seconds) unlimited
-f: file size (blocks) unlimited
-d: data seg size (kbytes) unlimited
-s: stack size (kbytes) 8192
-c: core file size (blocks) 0
-m: resident set size (kbytes) unlimited
-u: processes 1024
-n: file descriptors 1024
-l: locked-in-memory size (kb) 64
-v: address space (kb) unlimited
-x: file locks unlimited
-i: pending signals 15661
-q: bytes in POSIX msg queues 819200
-e: max nice 0
-r: max rt priority 0

这里我们修改的是ulimit -v: address space(kb) 选项 也就是用户进程的最大虚拟地址空间。
我们新建个用户cb,在启动mongod之前
ulimit -v 1000000 修改最大虚拟地址空间为1G
然后运行mongod 端口为10000,并执行1000W的数据插入脚本。
再使用root用户,不对ulimit进行任何修改,开起另外一个mongod 端口为20000 ,也同时进

1000端口的为限制虚拟 地址空间的,2000端口是没有限制的。 效果很明显!
0
0
分享到:
评论

相关推荐

    cgroup限制mongodb进程内存大小

    以限制mongodb的内存大小为例。 mkdir /cgroup/memory/test/ echo 50M > /cgroup/memory/test/memory.limit_in_bytes echo 50M > /cgroup/memory/test/memory.memsw.limit_in_bytes cgexec -g memory:test mongod -...

    限制mongodb内存的使用

    默认情况下,mongodb占用的内存大小为: Starting in 3.4, the WiredTiger internal cache, by default, will use the larger of either: 50% of RAM minus 1 GB, or 256 MB. 即 (总内存 × 50% - 1GB) 和 (256...

    mongodb 对内存的严重占用以及解决方法

    2. **调整工作集大小**: 通过限制MongoDB的工作集大小,确保它不超过可用内存的一定比例,防止过度交换。可以使用`working_set`参数进行调整。 3. **增加内存**: 显然,增加服务器的RAM是最直接的方法。但这不是...

    解决MongoDB占用内存过大频繁死机的方法详解

    在Linux环境下,可以使用cgroups(控制组)来限制MongoDB进程的内存使用,防止其过度消耗系统资源。 6. **分片和水平扩展**: 如果数据量大且内存资源有限,考虑采用分片(sharding)技术,将数据分散到多个...

    MongoDB开发使用手册

    - MongoDB定期执行内存压缩操作,以释放未使用的内存区域,减少内存碎片。 - 通过移动数据、合并空闲块等方式,整理内存布局,提高内存利用率。 综上所述,《MongoDB开发使用手册》不仅详细介绍了NoSQL数据库的...

    MongoDB 内存使用情况分析

    如果MongoDB被限制在单个NUMA节点上运行,可能会收到警告,建议使用`numactl --interleave=all`来避免性能问题。这是因为NUMA架构下,不同节点的内存访问速度可能不同。然而,由于MongoDB的内存管理主要依赖操作系统...

    windows mongodb 32位

    1. 内存限制:32位系统最大可使用的物理内存有限,因此MongoDB 32位版的最大数据集大小通常不超过2GB。这是因为操作系统对单个进程的内存限制。 2. 数据存储:MongoDB使用一种名为MMAPv1的存储引擎,它将数据文件...

    MongoDB索引限制.pdf

    如果索引超出内存限制,MongoDB 将开始使用磁盘上的缓存,这可能导致性能下降。 2. **查询限制** - **不支持的查询类型**:某些查询操作无法使用索引,例如包含正则表达式、非操作符(如 `$nin`, `$not`)、算术...

    MongoDB介绍与使用文档

    建议在64位系统上运行,因为在32位系统中MongoDB支持的最大文件大小限制为2GB。 **安装步骤:** 1. 解压下载的`mongodb-linux-x86_64-2.2.2.tgz`文件至指定目录。 2. 进入解压后的目录`mongodb-linux-x86_64-2.2.2...

    MongoDB.pdf

    MongoDB使用内存映射文件,这意味着数据被加载到内存中,从而加快访问速度。在32位系统中,Windows下的数据大小限制在2GB。不过,对于64位系统而言,数据大小要大得多。 MongoDB的安装和管理相对简单。在设置服务器...

    windows32位mongodb

    3. **32位限制**:32位操作系统最大可支持约4GB的内存(实际可用内存通常少于这个值),而MongoDB在处理大量数据时,内存大小对其性能至关重要。因此,32位MongoDB可能在处理大数据集时性能受限,建议在资源允许的...

    mongodb 手册,帮助文件。

    - **内存管理**:理解 MongoDB 对内存的使用情况。 - **磁盘空间**:规划磁盘空间以满足数据增长的需求。 - **CPU 负载**:监控 CPU 使用率以避免过载。 **9.2 查看和设置资源限制** - **ulimit 命令**:使用 ...

    mongodb-linux-i686 32位

    "mongodb-linux-i686" 包确保了这些系统能够运行 MongoDB,尽管可能在内存使用和性能上存在限制。 3. **安装与配置**:在 Linux 上安装 MongoDB i686 版本通常涉及下载对应架构的二进制文件,解压后将其放置到适当...

    mongodb 使用说明

    - **文件描述符限制与持久连接**:增加操作系统文件描述符限制,并使用持久连接,有助于提高MongoDB的性能。 - **商业支持**:考虑使用第三方提供的商业支持服务,例如10gen(现称为MongoDB Inc.),以获得更全面...

    MongoDBjava各版本驱动下载

    - 优化了性能和内存使用,提高了大规模数据操作的效率。 总之,MongoDB Java驱动是Java开发者与MongoDB数据库交互的基础,正确选择和使用驱动版本能有效提升开发效率和应用性能。在实际项目中,要根据项目的具体...

    【老版本】MongoDB+Linux+2.6.12

    - **内存映射文件系统(MMFS)**:MongoDB使用MMFS进行数据存储,提供高性能的读写操作。 - **复制集改进**:增强了复制集的稳定性,包括自动故障转移和更好的日志同步策略。 2. 在Linux 2.6.12上安装MongoDB: ...

    MongoDB面试专题.pdf

    在32位系统上,MongoDB默认禁用了journaling功能,以避免额外的内存映射文件进一步限制数据库大小。在journaling启用时,如果journal写操作不完整(如遇到中途故障),则在恢复过程中不会回放不完整的条目。MongoDB...

Global site tag (gtag.js) - Google Analytics