the*_*cer 7 server filesystem 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
Run Code Online (Sandbox Code Playgroud)
这是一个 64 位安装,我想将最大打开文件从 1024 增加到更令人兴奋的限制,例如 5000。这有什么问题吗?会不会造成不稳定?
谢谢。
max-open 是一个用户可以在单个会话中同时打开的文件数。
另请注意,所有限制设置都是在每次登录时设置的。它们不是全球性的,也不是永久性的;仅在会话期间存在。
(来自 man limit.conf(5))
最大数量的安全值实际上取决于您的使用情况。使用默认值的目的是为了防止轻微(意外)拒绝服务。打开文件的数量也有全局限制:
cat /proc/sys/fs/file-max
Run Code Online (Sandbox Code Playgroud)
您可以通过运行来更改该数字,例如
echo 100000 > /proc/sys/fs/file-max
Run Code Online (Sandbox Code Playgroud)
(显然是使用 root 用户)。更好的是还添加行fs.file-max = 10000
以/etc/sysctl.conf
在重新启动后加载相同的设置。
从 ulimit 开始:增加该数字是安全的。但是,打开文件的数量不应超过全局文件最大数量,因为这样就不再可能打开新文件(例如登录需要打开文件)。
如果有多个用户,请记住,如果更改默认值,每个人都可以打开更多文件。例如,30 个用户 * 5000 个文件 = 150 000 个打开的文件(假设每个人都打开最大数量的文件,并且仅使用单个会话)。如果您有一些由多个用户使用的真正资源匮乏(例如打开很多文件)的软件,这可能是一个问题。