/proc/sys/fs/file-max 的最大值

/proc/sys/fs/file-max 的最大值

今天我的服务器崩溃了,Too many open files in system:但我已经有很高的值,这个值的最大值是多少?

我觉得谷歌对此没有很好的结果,解释了设置这些值需要考虑什么,他们只是说将其设置为 100k。

我有一个 32 GB RAM 服务器,现在仅使用 10 GB,我假设将文件限制增加到非常高的值会增加 RAM 使用量,是否有某种公式可以用来计算这个?就像 8 GB 内存一样,您可以打开 X 个文件吗?

当前的设置:

cat /proc/sys/fs/file-max
100000
ulimit -Hn
1048576
ulimit -Sn
1024

答案1

正如 Kusalananda 所说,增加file-max不会直接对内存使用产生影响,但它将允许进程打开更多文件描述符,这将产生连锁反应(既来自跟踪内核中的文件描述,又增加了内核中的内存使用量)。使用这些描述和描述符的进程) - 内核注释建议每个文件大约为 1 KB 的内核数据,并且file-max如果系统启动时最终代表超过 10% 的内存(8192),则将减少默认值(8192)(IE只有 80 MiB 的 RAM)。内核施加的最大值是可以存储在您的体系结构上的 C 类型变量中的最大值long

如果增加file-max,也应该增加inode-max内核文档说这应该“比 file-max 中的值大 3-4 倍,因为 stdin、stdout 和网络套接字也需要一个 inode 结构来处理它们。”

请注意,点击file-max将导致内核日志消息显示“VFS:文件最大限制n达到”,具有适当的值n。如果您的日志中没有该信息,则您要么没有点击file-max,要么对日志进行了过多的过滤(这是一条信息级日志消息)。

file-max不限制进程CAP_SYS_ADMIN,所以点击它不会停止一切。)

相关内容