解决MongoDB占用内存过大频繁死机的方法详解
从MongoDB 3.4开始,默认的WiredTiger内部缓存大小是以下两者中的较大者:
50%(RAM-1 GB),或 256 MB
例如,在总共有4GB RAM的系统上,WiredTiger缓存将使用1.5GB RAM()。
相反,总内存为1.25 GB的系统将为WiredTiger缓存分配256 MB,因为这是总RAM的一半以上减去1 GB()。
// 4GB
0.5 * (4 GB - 1 GB) = 1.5 GB
// 1.25GB
0.5 * (1.25 GB - 1 GB) = 128 MB < 256 MB
看完文档,我查看了自己的内存使用
$ free -h # 没启动mongod total used free Mem: 3.7G 2.4G 1.3G # 启动mongod total used free Mem: 3.7G 1.8G 364M
直接占满内存了
参考了一部分网上的文章,大致的意思就是说,MongoDB占用了太多内存,被系统kill掉了,所以出现宕机现象
解决方式
添加两个参数
修改配置 mongodb.conf
# 为高速缓存分配的最大内存量;默认为物理RAM的1/2 # wiredTigerCacheSizeGB <float> wiredTigerCacheSizeGB=0.5 # 最大同时连接数,默认1000000
更多关于MongoDB占用内存过大的问题解决方法请查看下面的相关链接
相关推荐
-
MongoDB 内存使用情况分析
MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型.Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引. 先 ps 一下看看.
-
解决MongoDB 排序超过内存限制的问题
对集合执行一个大排序操作(如聚合),出现以下错误:(测试版本:MongoDB 3.0.6) > db.bigdata.aggregate( {$group : {_id : "$range", total : { $sum : 1 }}}, {$sort : {total : -1}} ); #... aggregate failed at Error (<anonymous>) at doassert (src/mongo/shell/assert.js:11:14
-
python监控linux内存并写入mongodb(推荐)
(需要安装psutil 用来获取服务器资源,以及pymongo驱动)#pip install psutil #pip install pymongo #vim memory_monitory.py 文件内容如下 #!/usr/bin/env python # -*- coding: UTF-8 -*- import psutil import socket import time from pymongo import MongoClient mongodbIp = '192.168.200.1
-
将MongoDB作为Redis式的内存数据库的使用方法
基本思想 将MongoDB用作内存数据库(in-memory database),也即,根本就不让MongoDB把数据保存到磁盘中的这种用法,引起了越来越多的人的兴趣.这种用法对于以下应用场合来讲,超实用: 置于慢速RDBMS系统之前的写操作密集型高速缓存 嵌入式系统 无需持久化数据的PCI兼容系统 需要轻量级数据库而且库中数据可以很容易清除掉的单元测试(unit testing) 如果这一切可以实现就真是太优雅了:我们就能够巧妙地在不涉及磁盘操作的情况下利用MongoDB的查询/检索功能.可
-
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 -port 27017 --bind_ip 127.0.0.1 --dbpath /var/lib/mongo 通过cgro
-
解决MongoDB占用内存过大频繁死机的方法详解
从MongoDB 3.4开始,默认的WiredTiger内部缓存大小是以下两者中的较大者: 50%(RAM-1 GB),或 256 MB 例如,在总共有4GB RAM的系统上,WiredTiger缓存将使用1.5GB RAM(). 相反,总内存为1.25 GB的系统将为WiredTiger缓存分配256 MB,因为这是总RAM的一半以上减去1 GB(). // 4GB 0.5 * (4 GB - 1 GB) = 1.5 GB // 1.25GB 0.5 * (1.25 GB - 1 GB) =
-
解决Oracle删除重复数据只留一条的方法详解
查询及删除重复记录的SQL语句1.查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断select * from 表 where Id in (select Id from 表 group by Id having count(Id) > 1) 2.删除表中多余的重复记录,重复记录是根据单个字段(Id)来判断,只留有rowid最小的记录DELETE from 表 WHERE (id) IN ( SELECT id FROM 表 GROUP BY id HAVING COUNT(id)
-
解决plsql连接失败,弹出空白提示框的方法详解
解决办法:1.win7下以管理员权限运行 2.修改时区 需要文件(前半部分路劲可能不同,以自己的安装路径为准):a:D:\oracle\product\10.2.0\db_1\WJLMGQS-PC_WJLMGQS\sysman\config\emd.propertiesb:D:\oracle\product\10.2.0\db_1\sysman\config\emd.propertiesc:D:\oracle\product\10.2.0\db_1\sysman\admin\supportedt
-
解决C# winForm自定义鼠标样式的两种实现方法详解
第一种:(调用系统API)首先引入两个命名空间 复制代码 代码如下: using System.Runtime.InteropServices;using System.Reflection; 导入API 复制代码 代码如下: [DllImport("user32.dll")]public static extern IntPtr LoadCursorFromFile(string fileName);[DllImport("user32.dll")]public
-
MySQL占用内存过大解决方案图文详解
目录 前言 解决方案 1. 找到配置文件 2. 修改配置文件 3. 重启MySQL 后记 前言 对于部分小资玩家来说,服务器数量和内存往往是很有限的,像我个人的服务器配置就是2核4G5M. 4G内存对于Java玩家来说,真的不大,开几个中间件+自己的微服务真的还蛮挤的,然后又摊上MySQL这个大冤种.我本机上的MySQL仅仅只占几M内存(虽然我不怎么用,但是本机MySQL确实是开着的): 而服务器的则要占400M,怎么说其实没什么吞吐量,纯粹是自己玩一玩,这内存占用属实有点吃不消啊... 解决方
-
PHP内存溢出的解决方法详解
目录 1.处理数组时出现内存溢出 2.使用sql查询数据,查出来很多,导致内存溢出 3.假定日志中存放的记录数为500000条,那么解决方案如下 4.上传excel文件时,出现内存溢出的情况 什么是内存溢出 内存溢出是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于虚拟机能提供的最大内存. 引起内存溢出的原因有很多种,常见的有以下几种: 1 内存中加载的数据量过于庞大,如一次从数据库取出过多数据: 2 集合类中有对对象的引用,使用完后未清空: 3 代码中存在死循环
-
python爬虫泛滥的解决方法详解
我们可以把互联网上搬运数据的程序看成小蚂蚁,它们需要采集不同的食物带回洞里存储.但是大家也知道白蚁泛滥的事件,在我们的网络环境里,如果爬虫都集中在某几个位置,最直接的结果就是这个网站的拥挤.对于我们这些网站访问者而言也不是好事情,首先网页的页面会被卡住.网站的管理人员面对爬虫过多,这时候就要进行一系列的限制措施了,这里小编分了两个大的应对方向,从不同的角度进 行分析爬虫过多的解决思路. 一.识别爬虫 1. HTTP请求头 这算是最基础的网络爬虫识别了,正常的网络访问者都是通过浏览器对网站进行访问
-
对Python中小整数对象池和大整数对象池的使用详解
1. 小整数对象池 整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间. Python 对小整数的定义是 [-5, 256] 这些整数对象是提前建立好的,不会被垃圾回收.在一个 Python 的程序中,无论这个整数处于LEGB中的哪个位置, 所有位于这个范围内的整数使用的都是同一个对象.同理,单个字母也是这样的. In [1]: a=-5 In [2]: b=-5 In [3]: a is b Out[3]: True In [4]: a
-
SpringBoot整合EasyExcel进行大数据处理的方法详解
目录 EasyExcel 需要的Maven 基础读案例 操作的excel 实体类 读取监听器 测试 基础写案例 实体类 测试 Excel模板方式 准备模块 实体类 测试 EasyExcel EasyExcel文档 我用过Poi和EasyPoi这些工具总体来说: POI 优点我觉得自由,但是迎来的就是复杂度,和大数据量时候性能的缺点 EasyPoi基于POI 的二次封装,解决了大部分的常用场景,简化了代码,但是特别复杂表格处理还是不行,而且性能的话和poi差不多,简单来说就是简化了Poi的操作,少
-
Flow如何解决背压问题的方法详解
目录 前言 关于背压(BackPressure) 背压问题是什么 定义背压策略 Flow的背压机制 模拟背压问题 背压处理方式 使用buffer进行缓存收集 使用conflate解决 使用collectLatest解决 小结 前言 随着时间的推移,越来越多的主流应用已经开始全面拥抱Kotlin,协程的引入,Flow的诞生,给予了开发很多便捷,作为协程与响应式编程结合的流式处理框架,一方面它简单的数据转换与操作符,没有繁琐的操作符处理,广受大部分开发的青睐,另一方面它并没有响应式编程带来的背压问题
随机推荐
- win2008下IIS7、IIS7.5 配置ASP+ACCESS使用环境
- js 利用image对象实现图片的预加载提高访问速度
- java生成申请单序列号的实现方法
- Java实现几种常见排序算法代码
- ASP.Net中数据展示控件的嵌套使用示例
- 详解Docker如何启动一个Centos镜像
- mysql 单机数据库优化的一些实践
- 解决canvas画布使用fillRect()时高度出现双倍效果的问题
- PHP实现更新中间关联表数据的两种方法
- ASP辅助代码
- 详解Android中的Toast源码
- Redis教程(六):Sorted-Sets数据类型
- Ubuntu下定时提交代码到SVN服务器的Shell脚本分享
- 用SQL语句实现替换字符串
- 深入ORACLE迁移到MYSQL的总结分析
- ECMAScript 创建自己的js类库
- Android RecyclerView实现下拉刷新和上拉加载
- C#中实现任意List的全组合算法代码
- java_object的简单使用详解
- PHP中上传大体积文件时需要的设置