mongoDB复制集维护和切换——内存限制
来源:互联网 发布:sql 分组合计 编辑:程序博客网 时间:2024/06/05 07:57
使用mongoDB是因为用到了graylog,部署运行2-3个月之后,发现mongoDB占用物理内存巨大,50G+,公司的数据架构居然质问我为什么不设置-Xmx堆内存大小,我尼玛只能呵呵醉了!
简单说mongoDB似乎没有配置项可以限制使用物理内存,粗略理解mongoDB本身不管理内存块,而是全部交给操作系统,如何限制mongoDB内存呢?
网上有说使用ulimit等,但是事实证明无效。
应对的办法就是使用cgroup,cgconfig是什么东西我就不说了,可以看我另一篇博客。
这里介绍下具体实施步骤。我们的复制集一共有3个节点,部署在三台机器上面,首先通过mongo ip:27017这种方式登录,查看每个几点的角色
rs0:SECONDARY>这种就是secondary了,rs0:PRIMARY>这种就是primary。
1、逐个处理secondary
第一步:
db.adminCommand({"replSetMaintenance":true})
保险起见,执行这个命令,让secondary进入维护模式,这时流量就会切走。
第二步:
kill mongoDB的进程号,等待mongo进程退出。
第三步:
准备好cgconfig配置。在/etc/cgconfig.conf文件追加
在/etc/cgrules.conf追加:
重启cgconfig服务,service cgconfig restart
在/cgroup/memory目录中可以看到DBLimitedGroup目录,说明生效了
第四步,重启secondary,不过前面要加上
cgexec -g memory:DBLimitedGroup bin/mongod -dbpath=./data/ -logpath=./logs/mongod.log --fork --replSet rs0 -bind_ip=192.168.32.189
2、primary切换,然后处理之前的primary
mongo登陆primary,然后执行rs.stepDown(15)这时候,执行rs.status观测新的primary有没有选举出来
一般来说都会正常选举,这时候,执行上面的步骤,限制老primary的内存。
说明,可以通过rs.status()查看primary和secondary的状态,同时可以使用下面的命令查看同步进度,这样就可以保证服务整体可用。
阅读全文
0 0
- mongoDB复制集维护和切换——内存限制
- mongodb 复制集 维护小结
- mongodb 复制集 维护小结
- MongoDB 复制集自动故障切换
- mongodb限制占用内存
- mongodb——复制数据库和表
- Mongodb复制集切换时设置复制集成员优先级
- MongoDB—主从复制
- MongoDB—主从复制
- MongoDB架构——复制集
- MongoDB——主从复制&副本集
- MongoDB 基础(七)复制Ⅰ—部署复制集
- MongoDB 复制集(二) 选举 自动故障切换
- mongodb 副本集 维护
- MongoDB—索引的建立与维护
- Nosql Mongodb之旅(28)—MongoDB管理维护Sharding
- ttlsa教程系列之mongodb——(五)mongodb架构-复制原理&复制集
- MongoDB——主从复制
- JSONObject和JSONArray的理解与用法
- ubuntu16.04安装qt4.8.7
- jQuery中JSONP的两种实现方式
- oracle 表被另一个用户锁住后的解决办法
- MVC控件的验证
- mongoDB复制集维护和切换——内存限制
- 工程不编译问题
- const深度总结(effective C++)
- Python爬虫获取豆瓣电影TOP250
- css常见布局方式
- oracel修改数据库表字段值语句
- javascript:history.go()和History.back()的区别
- redis详解(二)数据类型详解
- StringBuffer的用法