ulimit 是一个用于控制 shell 进程资源使用的命令行工具。通过设置适当的限制,可以防止 CentOS 系统过载。以下是如何使用 ulimit 来防止系统过载的一些建议:
临时设置 ulimit 限制:
在 shell 中,您可以使用 ulimit 命令临时设置资源限制。例如,以下命令将最大文件描述符数量设置为 4096:
ulimit -n 4096 请注意,这些更改仅在当前 shell 会话中生效。当您关闭 shell 或重新启动系统时,这些设置将丢失。
永久设置 ulimit 限制:
要永久设置 ulimit 限制,您需要编辑 /etc/security/limits.conf 文件。使用文本编辑器打开文件,例如:
sudo vi /etc/security/limits.conf 在文件末尾添加以下行,以设置特定用户或用户组的资源限制:
username soft nofile 4096 username hard nofile 8192 将 username 替换为您要设置限制的用户名。soft 行表示软限制,hard 行表示硬限制。软限制是用户可以自行增加的限制,而硬限制是操作系统强制执行的限制。
保存并关闭文件。要使更改生效,请重新登录或重启系统。
使用 cgroups 控制资源使用:
对于更高级的资源管理,您可以使用 cgroups(控制组)来限制进程组使用的资源。cgroups 是 Linux 内核的一个功能,允许您限制、记录和隔离进程组的资源使用(如 CPU、内存、磁盘 I/O 等)。
要使用 cgroups,您需要安装 cgroup-tools 软件包:
sudo yum install cgroup-tools 接下来,创建一个新的 cgroup,例如名为 “limited_group” 的 cgroup:
sudo cgcreate -g memory:/limited_group 为新 cgroup 设置内存限制(例如,限制为 500MB):
echo 500M | sudo tee /sys/fs/cgroup/memory/limited_group/memory.limit_in_bytes 将要限制的进程添加到 cgroup 中。首先找到进程的 PID,然后执行以下命令:
sudo cgclassify -g memory:limited_group <PID> 将 <PID> 替换为要限制的进程的进程 ID。
使用 cgget 命令检查 cgroup 的资源使用情况:
sudo cgget -g memory:limited_group 通过结合使用 ulimit 和 cgroups,您可以有效地防止 CentOS 系统过载。请根据您的需求选择合适的方法,并确保在进行更改之前充分了解其影响。