资源限制¶
Linux 系统使用限制机制或配额机制为系统资源提供服务质量,并且包含异常进程。
这些限制分为系统级别和用户级别。如果需要修改这些限制,则了解不同的限制配置会有帮助。
系统范围限制¶
部分全局资源限制在 Linux 内核中实施,并且可以使用内核参数进行控制。
例如,可以使用 fs.file-max 参数来设置针对最大打开文件数的全局限制。此限制应用于所有进程,并且用户不能超过其他限制值。
每用户限制¶
对于不由 systemd 管理的进程,可以在 /etc/security/limits.conf
文件中使用上限和下限基于用户为 PAM 登录设置资源限制。
可以设置临时值,并使用 ulimit 命令检查当前值。例如,要更改当前用户的最大打开文件数描述符的软限制:
ulimit -S -n <NUMBER>
有关详细信息,请参见 man limits.conf。
服务限制¶
使用 systemd 单元启动的服务的资源限制不遵循正常用户限制,因为进程在单独的 Linux 控制组 (cgroup) 中启动,Linux cgroup 将相关的进程组相关联并提供资源计帐。
可以在相应的单元文件或配置放置目录中使用资源限制指令来控制各个 systemd 服务的资源限制。请参见 process properties section of the systemd.exec man page。
可以使用 /etc/systemd/system.conf.d/
目录中的文件来控制所有 systemd 服务的资源限制。例如,要禁用对最大打开文件数的限制:
sudo mkdir -p /etc/systemd/system.conf.d/
sudo tee /etc/systemd/system.conf.d/50-nfiles.conf > /dev/null <<'EOF'
[Manager]
DefaultLimitNOFILE=infinity
EOF