- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
mogodb对内存的严重占用以及解决方法
刚开始使用mongodb的时候,不太注意mongodb的内存使用,但通过查资料发现
mongodb对内存的占用是巨大的,在本地测试服务器中,8G的内存居然被占用了45%。
汗呀。
本文就来剖析一下mongodb对内存的具体使用方法,以及生产环境针对mongodb
占大量内存的问题的解决。
先看一个MongoDB服务器的top命令结果
shelltop-p$(pidofmogod)
Mem:total,used,2806804kfree,245020k
buffers
Swap:2097144ktotal,100kused,2097044kfree,
cached
VIRTRESSHR%MEM
1892g21g21g69.6
或者先top后,然后shift+m把当前进场按占用内存的多少排序。看看你的
mongodb能占用多少内存。
先了解一下liux对内存的管理方式:
在Linux里(别的系统也差不多),内存有物理内存和虚拟内存之说,物理内存是什么
自然无需解释,虚拟内存实际是物理内存的抽象,多数情况下,出于方便性的考虑,程序
访问的都是虚拟内存地址,然后操作系统会把它翻译成物理内存地址。
很多人会把虚拟内存和Swap混一谈,实际上Swap只是虚拟内存引申出的一种技
术而已:操作系统一旦物理内存不足,了腾出内存空间存放新内容,就会把当前物理内
存中的内容放到交换分区里,稍后用到的时候再取回来,需要注意的是,Swap的使用可
能会带来性能问题,偶尔之无需紧张,糟糕的是物理内存和交换分区频繁的发生数据交
换,这被称之Swap颠簸,一旦发生这种情况,先要明确是什么原因造成的,如果是内
存不足就好办了,加内存就可以解决,不过有的时候即使内存充足也可能会出现这种问题,
比如MySQL就有可能出现这样的情况,解决方法是限制使用Swap:
shellsysctl-wvm.swappiess=0
查看内存情况最常用的是free命令:
shellfree-m
totalusedfreesharedbufferscached
Mem:321012937727230239
25880
-/+buffers/cache:325828842
Swap:204702047
新手看到used一栏数值偏大,free一栏数值偏小,往往会认内存要用光了。其实
并非如此,之所以这样是因每当我们操作文件的时候,Linux都会尽可能的把文件缓存
到内存里,这样下次访问的时候,就可以直接内存中取结果,所以cached一栏的数值
非常的大,不过不用担心,这部分内存是可回收的,操作系统会按照LRU算法淘汰冷数据。
除了cached,还有一个buffers,它和cached类似,也是可回收的,不过它的侧重点在
于缓解不同设备的操作速度不一致造成的阻塞,这里就不多做解释了。
知道了原理,我们就可以推算出系统可用的内存是free+buffers+cached:
shellecho2723+239+25880|bc-l
28842
至于系统实际使用的内存是used–buffers–cached:
shellecho29377-239-25880|bc-l
3258
除了free命令,还可以使用sar命令:
shellsar-r
kbmemfreekbmemused%memusedkbbufferskbcached
322
文档评论(0)