我想在 Amazon Linux 中设置 ulimit 值以增加系统资源的配额。
解决方案
**注意:**最佳做法是保留实例和数据的备份。在进行故障排除之前,请创建 Amazon Elastic Block Store (EBS) 支持的亚马逊机器映像 (AMI),或创建 Amazon EBS 卷的快照。
要设置 ulimit 值,请运行 ulimit 命令或修改您的系统配置文件。要管理个人用户的系统资源配额,请运行 ulimit 命令。
ulimit 命令用于控制以下系统配额:
- nofile: 打开的文件描述符的最大数量
- nproc: 最大进程数
- stack: 堆栈大小
- core: 核心文件大小
- memlock: 最大锁定内存地址空间
系统配额有两种类型:硬配额和软配额。软配额是系统强制执行的当前配额。使用软配额增加或减少配额,直到达到硬配额。硬配额是您可以将软配额增加到的最大值。只有根用户可以增加硬配额。
在设置新的 ulimit 值之前,运行以下命令来检查会话的资源配额:
ulimit -a
real-time non-blocking time (microseconds, -R) unlimited
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 30446
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 65535
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) unlimited
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
**注意:**要查询硬配额,请将 ulimit 命令中的 -a 替换为 -Ha。
设置临时 ulimit 值
要为当前 Shell 会话设置临时 ulimit 值,请运行 ulimit 命令。使用 -S 选项设置软配额,使用 -H 选项设置硬配额。例如,要将打开的最大文件数更改为 10000,请运行以下命令:
ulimit -Sn 10000
ulimit -Hn 10000
**注意:**将 10000 替换为要将打开的最大文件数更改为的数字。
如果您是根用户,可以运行以下命令将 ulimit nproc 值临时设置为 unlimited(无限制):
ulimit -u unlimited
设置永久的 ulimit 值
要设置重启后仍然有效的永久 ulimit 值,请修改 /etc/security/limits.conf 文件。
最佳做法是在 /etc/security/ 文件夹中创建文件名为 limits.conf.bk 的 limits.conf 备份文件。要创建备份,请运行以下命令:
cp /etc/security/limits.conf /etc/security/limits.conf.bk
使用文本编辑器打开该文件,然后将以下行添加到 /etc/security/limits.conf 文件中:
username soft nofile 65536
username hard nofile 65536
username soft nproc 4096
username hard nproc 8192
**注意:**将 username 替换为您的用户名,将 65536 替换为打开的最大文件数,将 4096 和 8192 替换为最大用户进程数。
要应用所有用户的编号,请使用 *:
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 8192
要应用更改,请注销,然后重新登录。
要检查用户的 nproc 打开文件配额,请运行以下命令:
无限制:
ulimit -u
软配额:
ulimit -Sn
硬配额:
ulimit -Hn
要将 nproc 配额设置为 unlimited(无限制)作为永久更新 /etc/security/limits.conf,请使用以下配置:
username soft nproc unlimited
username hard nproc unlimited
**注意:**将 username 替换为您的用户名。
ulimit 值的最佳实践
设置 ulimit 值时,请使用以下最佳实践:
- 为应用程序和进程的特定要求设置 ulimit 值。
- 监控系统的资源使用情况,并根据需要调整 ulimit 值。
- 使用新的 ulimit 值测试您的应用程序和进程,以确保它们正常运行。
- 检查是设置系统范围的用户配额还是特定的用户配额,然后调整您的配置。
**重要事项:**如果您设置了极高的值或设置了 unlimited(无限制)值,则可能会遇到安全性和稳定性问题。
相关信息
Red Hat Enterprise Linux (RHEL) 网站上的如何设置 ulimit 值