微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何限制mongodump的CPU和RAM资源?

我有一个mongod服务器运行。 每天,我正在执行mongodump以便进行备份。 问题在于,mongodump会占用大量的资源,并且会减慢服务器的运行速度(顺便说一下,还有其他一些繁重的任务)。

我的目标是以某种方式限制在shell脚本中调用的mongodump。

谢谢。

如何用名字启动一个PHP进程?

我想利用PCA9685芯片驱动beaglebone黑色的舵机,我看到有一个linux驱动程序,但是如何在C / C ++中使用。 任何例子?

可以在BASH环境中创build和操作一个对象列表

是否可以使用`as`来组装和运行原始cpu指令?

在头文件中定义的函数实现是否被编译到静态库中?

sed help:匹配和replace文字“ n”(不是换行符)

LEAdvertisingManager1从DBus.ObjectManager.GetManagedobjects中丢失

将terminal显示输出写入文件

gdb问题设置硬件观察点/如何设置软件观察点

服务器devise模式/最佳实践的最佳来源是什么?

你应该使用cgroups。 挂载点和细节在发行版和内核上是不同的。 即Debian 7.0与股票内核不认挂载cgroupfs并禁用内存子系统(伙计们建议用cgroup_enabled =内存重新启动),而openSUSE 13.1与所有的开箱(主要由于systemd)附带。

所以首先,创建挂载点并挂载cgroupfs(如果尚未完成的话):

mkdir /sys/fs/cgroup/cpu mount -t cgroup -o cpuacct,cpu cgroup /sys/fs/cgroup/cpu mkdir /sys/fs/cgroup/memory mount -t cgroup -o memory cgroup /sys/fs/cgroup/memory

创建一个cgroup:

mkdir /sys/fs/cgroup/cpu/shell mkdir /sys/fs/cgroup/memory/shell

设置一个cgroup。 我决定改变cpu的份额 。 认值为1024,所以如果有竞争者,将其设置为128将会将cgroup限制为所有cpu资源的11%。 如果仍然有空闲的cpu资源,他们将被给予mongodump。 您也可以使用cpuset来限制可用内核的数量

echo 128 > /sys/fs/cgroup/cpu/shell/cpu.shares echo 50331648 > /sys/fs/cgroup/memory/shell/memory.limit_in_bytes

现在将PID添加到cgroup中,这也会影响到他们的所有孩子。

echo 13065 > /sys/fs/cgroup/cpu/shell/tasks echo 13065 > /sys/fs/cgroup/memory/shell/tasks

我运行几个测试。 尝试分配一堆内存的Python被OOM杀死:

myaut@zenbook:~$ python -c 'l = range(3000000)' Killed

我也跑了四个无限循环,第五个在cgroup中。 正如所料,在cgroup中运行的循环仅占cpu间的45%,其余的则达到355%(我有4个内核)。

所有这些变化都无法在重启之后保存

您可以将此代码添加到运行mongodump的脚本,或者使用一些永久解决方案。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐