CentOS ulimit如何限制内存使用率

在 CentOS 系统中,ulimit 命令可以用来设置或查看用户进程的资源限制。要限制内存使用率,可以使用 ulimit 命令的 -v 选项来设置虚拟内存(包括物理内存和交换空间)的最大使用量。

以下是如何使用 ulimit 命令来限制内存使用率的步骤:

  1. 查看当前的内存限制

    ulimit -v
    
  2. 设置内存限制
    假设你想将内存限制设置为 2GB,可以使用以下命令:

    ulimit -v 2147483648
    

    这里的 2147483648 是 2GB 的字节表示。

  3. 永久设置内存限制
    ulimit 命令设置的限制在当前 shell 会话结束后会失效。要永久设置内存限制,可以编辑 /etc/security/limits.conf 文件。

    打开文件:

    sudo vi /etc/security/limits.conf
    

    在文件末尾添加以下行:

    * soft as unlimited
    * hard as unlimited
    

    这里的 * 表示所有用户,soft 是软限制,hard 是硬限制。你可以根据需要修改这些值。

  4. 重启系统
    修改 /etc/security/limits.conf 文件后,需要重启系统以使更改生效。

  5. 验证设置
    重启系统后,再次使用 ulimit -v 命令来验证内存限制是否已正确设置。

请注意,ulimit 命令的限制是针对单个进程的,而不是整个系统。如果你需要限制整个系统的内存使用,可能需要使用其他工具或方法,例如 cgroups(控制组)。

使用 cgroups 限制内存

cgroups 是 Linux 内核提供的一种机制,可以用来限制、记录和隔离进程组的资源使用(CPU、内存、磁盘 I/O 等)。以下是使用 cgroups 限制内存的基本步骤:

  1. 安装 cgroup 工具

    sudo yum install libcgroup-tools
    
  2. 创建一个新的 cgroup

    sudo cgcreate -g memory:/mygroup
    
  3. 设置内存限制
    假设你想将内存限制设置为 2GB,可以使用以下命令:

    echo 2147483648 | sudo tee /sys/fs/cgroup/memory/mygroup/memory.limit_in_bytes
    
  4. 将进程添加到 cgroup
    假设你想将进程 PID 为 1234 的进程添加到 mygroup cgroup,可以使用以下命令:

    sudo echo 1234 | sudo tee /sys/fs/cgroup/memory/mygroup/tasks
    

通过这些步骤,你可以使用 cgroups 来限制特定进程或进程组的内存使用。