mongodb 内存使用率低的问题?

quwei197874 2012-03-22 10:28:54
我机器有32G内存,只有一个mongodb程序,mongodb只使用了大约3G多内存做为可用内存后就不时自动减少内存使用量,又自动恢复,从而是cpu占有率很高,请问这是怎么回事?该如何解决?
...全文
403 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
kiss筱魔 2014-07-15
  • 打赏
  • 举报
回复
MongoDb有个bug,消耗内存是实际数据大小的3倍左右,我们服务器的内存一直在80%以上,从没下降过,而程序在任务管理器里也就占用了1.5G而已,服务器内存是16G的。
quwei197874 2012-03-23
  • 打赏
  • 举报
回复
谢谢各位了,新下个最新版本的mongodb,又优化了查询,现在问题解决了,猜想可能的原因有几个:查询太复杂混乱,db里碎片太多。。。
reyoung1110 2012-03-22
  • 打赏
  • 举报
回复
= =你不是装的32位的mongodb吧。。
quwei197874 2012-03-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 justkk 的回复:]
程序里会不会有不停 申请,再释放 的操作
[/Quote]不会有这种情况,mongodb是用内存映射处理内存,交由操作系统管理,我自己映射一个大内存就不会减少,不知道什么原因
justkk 2012-03-22
  • 打赏
  • 举报
回复
程序里会不会有不停 申请,再释放 的操作
阿非 2012-03-22
  • 打赏
  • 举报
回复
你装的什么版本的?

用shell 增加数据观察下
pathuang68 2012-03-22
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 quwei197874 的回复:]

引用 11 楼 adlay 的回复:
实际的物理内存不是程序能够控制的, 操作系统可以把分配了没使用的内存交换到硬盘上, 使用的时候在读到物理内存中.
你可以试试把操作系统的虚拟内存设置关闭(即把分页文件大小设置为 0)来试试.
我机器上有32G内存,好多还没用呢;os在内存没使用完全的时候时不会进行LRU操作的吧。
[/Quote]

这么多内存,用RAMDISK把它们都用起来吧!
quwei197874 2012-03-22
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 adlay 的回复:]
这个就只有操作系统的实现者才知道了.
所以只是说可以试试, 不一定就一定生效.

不过我想它是不会等你内存用完了才去做页面交换的. 完全可以在系统空闲的时候来做这些事情.
而且即使设置了不把内存交换到硬盘上, 也不会一启动就把你映射的文件全部加载到内存里面吧, 可以多等会儿看看是不是过了一段时间后就稳定下来了.
[/Quote]好的,我试试
Kaile 2012-03-22
  • 打赏
  • 举报
回复
进来学习一下mongo
www_adintr_com 2012-03-22
  • 打赏
  • 举报
回复
这个就只有操作系统的实现者才知道了.
所以只是说可以试试, 不一定就一定生效.

不过我想它是不会等你内存用完了才去做页面交换的. 完全可以在系统空闲的时候来做这些事情.
而且即使设置了不把内存交换到硬盘上, 也不会一启动就把你映射的文件全部加载到内存里面吧, 可以多等会儿看看是不是过了一段时间后就稳定下来了.
quwei197874 2012-03-22
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 adlay 的回复:]
实际的物理内存不是程序能够控制的, 操作系统可以把分配了没使用的内存交换到硬盘上, 使用的时候在读到物理内存中.
你可以试试把操作系统的虚拟内存设置关闭(即把分页文件大小设置为 0)来试试.
[/Quote]我机器上有32G内存,好多还没用呢;os在内存没使用完全的时候时不会进行LRU操作的吧。
www_adintr_com 2012-03-22
  • 打赏
  • 举报
回复
实际的物理内存不是程序能够控制的, 操作系统可以把分配了没使用的内存交换到硬盘上, 使用的时候在读到物理内存中.
你可以试试把操作系统的虚拟内存设置关闭(即把分页文件大小设置为 0)来试试.
quwei197874 2012-03-22
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zimbu 的回复:]
听说有分就进来了。。。

MongoDB使用的是内存映射存储引擎,它会把磁盘IO操作转换成内存操作,如果是读操作,内存中的数据起到缓存的作用,如果是写操作,内存还可以把随机的写操作转换成顺序的写操作,总之可以大幅度提升性能。MongoDB并不干涉内存管理工作,而是把这些工作留给操作系统的虚拟内存管理器去处理,这样的好处是简化了MongoDB的工作,但坏处是你没有方法很方便的控制MongoDB占……
[/Quote]谢谢帮顶,会记得给你分的,呵呵
巫师 2012-03-22
  • 打赏
  • 举报
回复
听说有分就进来了。。。

MongoDB使用的是内存映射存储引擎,它会把磁盘IO操作转换成内存操作,如果是读操作,内存中的数据起到缓存的作用,如果是写操作,内存还可以把随机的写操作转换成顺序的写操作,总之可以大幅度提升性能。MongoDB并不干涉内存管理工作,而是把这些工作留给操作系统的虚拟内存管理器去处理,这样的好处是简化了MongoDB的工作,但坏处是你没有方法很方便的控制MongoDB占多大内存,事实上MongoDB会占用所有能用的内存,所以最好不要把别的服务和MongoDB放一起。

http://www.searchdatabase.com.cn/showcontent_51990.htm
quwei197874 2012-03-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 adlay 的回复:]
你说的是什么内存在变化? 是工作集还是提交大小?
[/Quote]实际使用的物理内存(res)
www_adintr_com 2012-03-22
  • 打赏
  • 举报
回复
你说的是什么内存在变化? 是工作集还是提交大小?
quwei197874 2012-03-22
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ymy1248227142 的回复:]
看到200分我就进来了
[/Quote]进者有分,呵呵!
ymy1248227142 2012-03-22
  • 打赏
  • 举报
回复
看到200分我就进来了
quwei197874 2012-03-22
  • 打赏
  • 举报
回复
自己顶一下

1,747

社区成员

发帖
与我相关
我的任务
社区描述
MongoDB相关内容讨论区
社区管理员
  • MongoDB社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧