管理 Linux 计算机上的资源使用限制

管理 Linux 计算机上的资源使用限制

大家好,我想知道是否有一个好的管理工具可以限制 Linux 环境中的用户资源消耗。

更详细地介绍一下我的问题,我目前正在尝试解决用户在系统间消耗整个 CPU 的问题。无论是运行模拟还是测试糟糕的并发代码,我都遇到了单个用户会耗尽一台服务器或一组计算机的问题。

我知道 /etc/security/limits.conf,但我没有看到基于 CPU 使用率来限制用户/用户组的方法,当单个进程占用 CPU 的多个核心时,这有点没用。

如果我在 limits.conf 的手册页中遗漏了任何内容,请随时给我指出方向,如果您有其他建议,我很乐意听到!

谢谢!

答案1

我会看看 cgroups - 这允许通过为进程提供份额来“切分”系统。

您可以对内存、CPU、磁盘 io 等方面进行限制。

例如将 foo 组内存限制为 10MB

 echo 10000000 > /sys/fs/cgroup/memory/groupname/foo/memory.limit_in_bytes

答案2

这里有几个选项可供考虑。

一,您可以在 /etc/security/limits.conf 中设置每个用户或每个组的 nice 值。您可以通过添加如下行来设置它:

@users      -       priority        10
username    -       priority        19

这并不能阻止用户创建巨大的数量但是,您可以通过限制用户的最大打开文件数来进一步限制用户,这将使他们可以使用的打开句柄数量减少到可管理的数量。

您还可以考虑使用虚拟机来完成此任务。在用户不断耗尽共享系统上的资源的情况下,这种隔离将非常有用。使用良好的编排和部署系统(如 OpenStack 或 CloudStack)(或者对于较小规模,甚至只是简单的 libvirt 和 KVM)可以使事情变得容易得多,尤其是考虑到这些堆栈的“易用性”部署工具的数量,例如 Mirantis Fuel。

答案3

您可以查看 CloudLinux 操作系统及其“cageFs”和“lve”功能。这允许您创建用户并为每个用户定义 ram/cpu/hdd 空间/iops/mysql 查询。

相关内容