Mongodb释放内存

1、由于碰到过mongodb吃掉所有闲置内存的情况,导致服务器操作越来越慢。虽然对mongodb的读操作没有太多影响,
但是此时写入的性能却极剧下降(怀疑内存不够引起的)。由于要收集大量的历史文件数据,
每次多线程收集到一定的程度时,写入文件速度越来越慢,经过多次测试发现,均与服务内存的使用峰值有关。
当服务器内存使用率较低时,多线程写入较快,当服务器内存被mongodb 映射耗尽时,多线程写入速度慢到惨不忍赌了,
即使是单线程情况这种情况表现也很明显。虽然mongodb提供了runCommnad({closeAllDatabase:1})或关闭数据库释放缓存。

启动CMD

d:  (转到D盘)

cd D:\Program Files\mongodb\bin   (Mongodb目录)

mongo

mongo>use admin

switched to db admin

mongo>db.runCommand({closeAllDatabases:1})

但是这却影响到了正常读写操作。因此给服务器预留一定的内存空间成了保障快速写入的一个方案,
当然在正常情况下不会出现如此频率的文件写入操作,只是现在面对的情况特殊,是要收集大量历史的文件。

=====================================================================================================

平时可以通过mongo命令行来监控MongoDB的内存使用情况,如下所示:

mongo> db.serverStatus().mem:
{
    "resident" : 22346,
    "virtual" : 1938524,
    "mapped" : 962283
}还可以通过mongostat命令来监控MongoDB的内存使用情况,如下所示:

shell> mongostat
mapped  vsize    res faults
  940g  1893g  21.9g      0其中内存相关字段的含义是:

mapped:映射到内存的数据大小 
visze:占用的虚拟内存大小 
res:占用的物理内存大小 
注:如果操作不能在内存中完成,结果faults列的数值不会是0,视大小可能有性能问题。

在上面的结果中,vsize是mapped的两倍,而mapped等于数据文件的大小,所以说vsize是数据文件的两倍,
之所以会这样,是因为本例中,MongoDB开启了journal,需要在内存里多映射一次数据文件,如果关闭journal,
则vsize和mapped大致相当。

==================================================================================
查看内存情况最常用的是free命令:

shell> free -m
             total       used       free     shared    buffers     cached
Mem:         32101      29377       2723          0        239      25880
-/+ buffers/cache:       3258      28842
Swap:         2047          0       2047

新手看到used一栏数值偏大,free一栏数值偏小,
往往会认为内存要用光了。其实并非如此,之所以这样是因为每当我们操作文件的时候,
Linux都会尽可能的把文件缓存到内存里,这样下次访问的时候,就可以直接从内存中取结果,
所以cached一栏的数值非常的大,不过不用担心,这部分内存是可回收的,
操作系统的虚拟内存管理器会按照LRU算法淘汰冷数据。还有一个buffers,也是可回收的,不过它是保留给块设备使用的。

知道了原理,我们就可以推算出系统可用的内存是free + buffers + cached:

shell> echo $((2723 + 239 + 25880))
28842至于系统实际使用的内存是used – buffers – cached:

shell> echo $((29377 - 239 - 25880))
3258

####切换日志
use admin
db.runCommand("logRotate")

Mongodb释放内存相关推荐

  1. mongodb 对内存的占用监控 ——mongostat,linux系统可用的内存是free + buffers + cached...

    刚开始使用mongodb的时候,不太注意mongodb的内存使用,但通过查资料发现mongodb对内存的占用是巨大的,在本地测试服务器中,8G的内存居然被占用了45%.汗呀.  本文就来剖析一下mon ...

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

    mongodb 对内存的严重占用以及解决方法[转载] 刚开始使用mongodb的时候,不太注意mongodb的内存使用,但通过查资料发现mongodb对内存的占用是巨大的,在本地测试服务器中,8G的内 ...

  3. 日常填坑 ——linux服务器,mongodb吃内存,导致服务器缓慢

    通过free -h 命令,发现服务器可用内存不足,并发现大量的内存被占用到buff/cache中. 一类,直接可以通过命令进行释放 sync; echo 3 > /proc/sys/vm/dro ...

  4. 频繁分配释放内存导致的性能问题的分析--brk和mmap的实现

    现象 1 压力测试过程中,发现被测对象性能不够理想,具体表现为:  进程的系统态CPU消耗20,用户态CPU消耗10,系统idle大约70  2 用ps -o majflt,minflt -C pr ...

  5. linux手动释放内存的方法

    Linux手动释放缓存的方法 Linux释放内存的命令: sync echo 1 > /proc/sys/vm/drop_caches drop_caches的值可以是0-3之间的数字,代表不同 ...

  6. 释放内存触发断点及数组、指针的NULL初始化

    Visual Studio调试时,出现"触发一个断点"内存释放出现异常 数组和对应指针的NULL初始化 数组使用之前要先对其初始化 char Outi[4] = { NULL }; ...

  7. 【百度分享】频繁分配释放内存导致的性能问题的分析

    现象1 压力测试过程中,发现被测对象性能不够理想,具体表现为:  进程的系统态CPU消耗20,用户态CPU消耗10,系统idle大约70  2 用ps -o majflt,minflt -C prog ...

  8. linux释放内存命令

    1.首先查看linux内存使用 #free -m 2.把内存数据同步到硬盘 #sync 3.修改 /proc/sys/vm/drop_caches文件 #echo 3 > /proc/sys/v ...

  9. 如何为linux释放内存和缓存

    如何为linux释放内存和缓存_华陌飞尘_新浪博客 如何为linux释放内存和缓存     (2011-10-20 10:49:01)        标签:     linux     swap    ...

  10. C++ 之new和delete释放内存

    C++ -释放内存(new和delete) C++动态分配和释放内存 @c.biancheng.net/view/206.html 在C语言中,动态分配内存用 malloc() 函数,释放内存用 fr ...

最新文章

  1. 低时延AI完美适配工业场景,边缘智能如何构建数字工业新生态?
  2. opengl加载显示3D模型PLY类型文件
  3. tomcat temp 大量 upload 文件_原创 | 浅谈URI中的任意文件下载
  4. Xtreme TaskPanel
  5. Jenkins自定义主题教程
  6. 前端经典练手项目|用 JavaScript 实现网页版扫雷
  7. python playsound 音量_Win32 PlaySound:如何控制音量?
  8. java 遍历json串_Java遍历Json数据
  9. 谈逻辑与数学界线之淡化
  10. geogebra画一段椭圆
  11. 数说CS|中国人民大学高瓴人工智能学院保研生源大起底!
  12. 面试问烂了的测试用例: 登录界面的测试用例
  13. 【Java 8 新特性】Java 8 时间接口示例:MonthDay、Month、OffsetDateTime 和 OffsetTime
  14. 中山大学HCP Lab系列论文:AI解题新突破,神经网络推开数学推理大门
  15. 【GPT4】微软 GPT-4 测试报告(6)与人类的交互能力
  16. 云思智学获得2021年度“育见美好·机构创新服务奖”
  17. 开原框架RxJava
  18. mysql的启动命令_mysql的配置和启动命令
  19. jqweui实现图片上传预览
  20. HashMap,HashTable,TreeMap,HashSet,TreeSet

热门文章

  1. 软件测试个人能力提升,软件测试人员提升测试技能的10个妙招分享
  2. 工具学习NO5.IAR学习
  3. 汽车零部件加工行业工业互联网智能工厂解决方案
  4. 视网膜屏幕和高清视网膜屏幕
  5. Java游戏开发——flappy bird
  6. 内存颗粒位宽和容量_DDR4内存颗粒--美光篇
  7. 计算机社团收获作文,写智慧校园的优秀作文
  8. 100层楼和两个玻璃球的问题
  9. 老徐解析小程序:微小程客户系统讲解
  10. beacon帧主要结构