安全的 ulimit 上限是多少?

安全的 ulimit 上限是多少?

这是输出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 个打开文件(假设每个人都打开最大数量的文件,并且只使用单个会话)。如果您有一些非常耗资源的软件(如打开很多文件)由多个用户使用,那么这可能是一个问题。

相关内容