ongodb内存管理和使用情况情况查询
来源:互联网 发布:会议室预约系统 源码 编辑:程序博客网 时间:2024/05/22 15:08
overview
MongoDB使用的是内存映射存储引擎,即Memory Mapped Storage Engine,简称MMAP。MMAP可以把磁盘文件的一部分或全部内容直接映射到内存,这样文件中的信息位置就会在内存中有对应的地址空间,这时对文件的读写可以直接用指针来做,而不需要read/write函数了,但这并不代表将文件map到物理内存,只有访问到这块数据时才会被操作系统以Page的方式换到物理内存。MongoDB将内存管理工作交给操作系统的虚拟内存管理器来完成,这样就大大简化了MongoDB的工作,同时操作系统会将数据刷新保存到磁盘上,下图就是MMAP的简要工作原理图
内存使用情况
查看Linux虚拟内存管理器是否对内存做了限制,如果显示为unlimited表示无限制
[jiangjianjian@f1-mongo1 ~]$ ulimit -a | grep memorymax locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
virtual memory (kbytes, -v) unlimited
修改虚拟内存限制
[jiangjianjian@f1-mongo1 ~]$ ulimit -m unlimited[jiangjianjian@f1-mongo1 ~]$ ulimit -v unlimited
查看当前MongoDB的连接数
mongo中每一个连接都是一个线程,需要一个stack,从结果中可看到当前连接数为2372,最大连接数为51200
bj1-farm1:PRIMARY> db.serverStatus().connections
{
"current" : 2372,
"available" : 48828,
"totalCreated" : NumberLong(185449264)
}
Linux下缺省的Stack大小查看
[jiangjianjian@f1-mongo1 ~]$ ulimit -a | grep stackstack size (kbytes, -s) 10240
MongoDB实际使用的Stack大小查看
可以用如下命令确认(单位:K)
[root@f1-mongo1 journal]# cat /proc/$(pidof mongod)/limits | grep stack | awk -F 'size' '{print int($NF)/1024}'
10240
调整stack大小的方法
如果Stack过大,比如上述的10240K,我们可以通过以下命令调整stack大小[root@f1-mongo1 journal]# ulimit -s 1024
MongoDB释放内存的命令
mongo> use adminmongo> db.runCommand({closeAllDatabases:1})
Mongodb自带命令查看其内存使用情况
其中resident代表物理内存使用情况,单位为M;而virtual为虚拟内存使用情况,mapped是映射到内存的数据大小。这里虚拟内存是mapped的两倍,是因为我们开启了Journal日志,需要在内存中多映射一次,大概就是它的两倍了。如果关闭Journal日志,虚拟内存大小将和mapped大小相当。
bj1-farm1:PRIMARY> db.serverStatus().mem
{
"bits" : 64,
"resident" : 46662,
"virtual" : 326198,
"supported" : true,
"mapped" : 161399,
"mappedWithJournal" : 322798
}
top命令查看
这里还可以通过top命令观察mongodb的内存使用情况,如下图,可看到其中的VIRT和RES与上述命令的结果一样PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
12603 mongod 20 0 318g 45g 44g S 28.0 72.1 27230:21 mongod
free命令查看
而再通过free命令可查看到内存占用中有多少是因为数据缓存和cache,关于如何查看free命令,参见http://blog.csdn.net/cug_jiang126com/article/details/42266653[jiangjianjian@f1-mongo1 ~]$ free
total used free shared buffers cached
Mem: 65921032 65262376 658656 0 274264 61742808
-/+ buffers/cache: 3245304 62675728
Swap: 100663288 11884 100651404
Mongodb内存大小配置建议
MongoDB应该分配的内存大小最好满足内存大小>索引+热数据+连接占用内存,通过db.stats()命令可查看到当前数据库的索引大小情况bj1-farm1:PRIMARY> db.stats()
{
"db" : "yc_driver", //当前数据库
"collections" : 5, //当前数据库多少表
"objects" : 2911281, //当前数据库所有表多少条数据
"avgObjSize" : 240.28991086741541, //每条数据的平均大小
"dataSize" : 699551452, //所有数据的总大小
"storageSize" : 858513408, //所有数据占的磁盘大小
"numExtents" : 21,
"indexes" : 5, //索引数
"indexSize" : 569229472, //索引大小
"fileSize" : 2080374784, //预分配给数据库的文件大小
"nsSizeMB" : 16,
"dataFileVersion" : {
"major" : 4,
"minor" : 5
},
"extentFreeList" : {
"num" : 0,
"totalSize" : 0
},
"ok" : 1
}
- ongodb内存管理和使用情况情况查询
- Mongodb内存管理和使用情况情况查询
- Mongodb内存管理和使用情况情况查询
- Mongodb内存管理和使用情况情况查询
- Mongodb内存管理和使用情况情况查询
- SuSE查询内存使用情况
- JMX 和系统管理。查询JVM内存线程等使用情况
- linux 内存和硬盘的空间及使用情况查询
- 一.内存管理情况
- 简单查看oracle的连接情况和内存使用情况.
- 简单查看oracle的连接情况和内存使用情况.
- solaris查看内存、CPU、硬盘总数和使用情况情况
- 检查系统和程序内存使用情况
- Linux查看CPU和内存使用情况
- Linux查看CPU和内存使用情况
- Linux查看CPU和内存使用情况
- Linux查看CPU和内存使用情况
- Linux查看CPU和内存使用情况
- 3DTouch桌面快捷方式
- html meta 中文乱码
- 界面中开发系统文件并获得URI
- js之事件冒泡和事件捕获详细介绍
- FU-A分包方式,以及从RTP包里面得到H.264数据和AAC数据的方法
- ongodb内存管理和使用情况情况查询
- 【leetcode】【223】Rectangle Area
- d3的一些资源库
- GPU Shader 编程基础
- Edittext不自动获取焦点解决方法以及获取焦点后的事件实现方法
- 学习博客收藏
- 飞行员配对方案问题 网络流||二分图匹配
- 2016-AspNet-MVC教学-1-算术加法提交及超链接测试
- 如何写一个防止同账号不同ip登录的程序?