![安全的 ulimit 上限是多少?](https://linux22.com/image/957274/%E5%AE%89%E5%85%A8%E7%9A%84%20ulimit%20%E4%B8%8A%E9%99%90%E6%98%AF%E5%A4%9A%E5%B0%91%EF%BC%9F.png)
这是输出ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 16382
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) unlimited
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
这是 64 位安装,我想将最大打开文件数从 1024 增加到更大的限制,例如 5000。这会有什么问题吗?会造成不稳定吗?
谢谢。
答案1
max-open 是一个用户可以保持打开的文件数单次会话同时地。
另外,请注意,所有限制设置都是针对每次登录设置的。它们不是全局的,也不是永久的;仅在会话期间存在。
(摘自 man limits.conf(5))
最大数量的安全值确实取决于您的使用情况。使用默认值的目的是防止轻微(意外)拒绝服务。打开文件数也有全局限制:
cat /proc/sys/fs/file-max
你可以通过运行例如来更改该数字
echo 100000 > /proc/sys/fs/file-max
(显然,使用 root 用户)。更好的方法是添加一行fs.file-max = 10000
,/etc/sysctl.conf
以便在重启后加载相同的设置。
从 ulimit 开始:增加该数字是安全的。但是,打开文件的数量不应超过全局文件最大值,因为这样就无法再打开新文件(例如,登录需要打开文件)。
如果有多个用户,请记住,如果您更改默认值,每个人都可以打开更多文件。例如,30 个用户 * 5000 个文件 = 150 000 个打开文件(假设每个人都打开最大数量的文件,并且只使用单个会话)。如果您有一些非常耗资源的软件(如打开很多文件)由多个用户使用,那么这可能是一个问题。