当前位置:Gxlcms > 数据库问题 > mongodb内存限制初探

mongodb内存限制初探

时间:2021-07-01 10:21:17 帮助过:64人阅读

service cgconfig start 

查看cgconfig是否启动

service cgconfig status 

设置开机启动  

chkconfig cgconfig on 


二、配置:

a、先看cgconfig配置文件:

	[root@mongo1 mongodb]# cat /etc/cgconfig.conf 
			mount {
				cpuset	= /cgroup/cpuset;
				cpu	= /cgroup/cpu;
				cpuacct	= /cgroup/cpuacct;
				memory	= /cgroup/memory;
				devices	= /cgroup/devices;
				freezer	= /cgroup/freezer;
				net_cls	= /cgroup/net_cls;
				blkio	= /cgroup/blkio;
			}

			group DBLimitedGroup {
					memory {
							memory.limit_in_bytes = "32212254720" ;

					}


			}

上面配置文件中,mount{...} 这一部分是安装libcgroup后生成的/etc/cgconfig.conf中默认有的,目的是定义各个子系统的挂载点,可以不用管。

为了限制mongodb,这里定义了一个group名字叫做DBLimitedGroup,这个group中定义了对内存memory进行限制,限制的项为memory.limit_in_bytes ,它的值为32212254720(32212254720/1024/1024/1024=30GB),线上服务器是32G的内存,这里设置限制为30G给mongodb。根据自己的情况设置,数值的单位为 byte字节,比如1G=1*1024*1024*1024=1073741824(byte)


b、然后看cgrules.conf 

cat  /etc/cgrules.conf 

# /etc/cgrules.conf
#The format of this file is described in cgrules.conf(5)
#manual page.
#
# Example:
#<user>		<controllers>	<destination>
#@student	cpu,memory	usergroup/student/
#peter		cpu		test1/
#%		memory		test2/
# End of file

*:mongod	memory		DBLimitedGroup/

这个cgrules.conf是配置cgexec命令的默认配置,后面会用到cgexec来执行mongod的程序,"#"开头是注释,不用管,看最后一行。


上面的意思为:

*     所有的用户以及用户组

mongod   mongod程序名(进程)

memory  使用memory子系统中的配置

DBLimitedGroup   cgroup.conf中自定义的group

全部连在一起就是说,执行cgexec时,如果满足“任何用户任何组执行mongod程序,那么被执行的进程(及mongod进程)将满足memory内存子系统中的DBLimitedGroup中的所有限制”

而DBLimitedGroup中的限制就是,限制内存使用为32G。

这样使用cgroup就限制了指定进程(这里是mongod进程)的(物理)内存使用。


配置完成后重新启动cgconfig

 service cgconfig restart


三、运行mongodb

第一台主机:

cgexec   -g memory:DBLimitedGroup /usr/bin/mongod -f /etc/mongodb/shard11.conf
cgexec   -g memory:DBLimitedGroup /usr/bin/mongod -f /etc/mongodb/shard21.conf
cgexec   -g memory:DBLimitedGroup /usr/bin/mongod -f /etc/mongodb/mongosvr.conf
/usr/bin/mongos -f /etc/mongodb/mongos.conf

第二台主机:

cgexec   -g memory:DBLimitedGroup /usr/bin/mongod -f /etc/mongodb/shard12.conf
cgexec   -g memory:DBLimitedGroup /usr/bin/mongod -f /etc/mongodb/shard22.conf
cgexec   -g memory:DBLimitedGroup /usr/bin/mongod -f /etc/mongodb/mongosvr.conf
/usr/bin/mongos -f /etc/mongodb/mongos.conf

地三台主机:

cgexec   -g memory:DBLimitedGroup /usr/bin/mongod -f /etc/mongodb/arb1.conf
cgexec   -g memory:DBLimitedGroup /usr/bin/mongod -f /etc/mongodb/arb2.conf
cgexec   -g memory:DBLimitedGroup /usr/bin/mongod -f /etc/mongodb/mongosvr.conf
/usr/bin/mongos -f /etc/mongodb/mongos.conf

我这里使用的mongodb的集群,版本的3.2.4


以下是截图:

第一台主机:

技术分享


第二台主机:

技术分享


第三台主机:

技术分享


由于本篇讲述的是cgroup限制mongo内存,因此mongodb的具体配置不在此列出。

本文出自 “xiaotong的博客” 博客,请务必保留此出处http://xiaotong.blog.51cto.com/4312502/1783768

mongodb内存限制初探

标签:cgroup cgconfig cgexec mongodb mongo mongodb内存限制

人气教程排行