有人可以解释一下linux中打开文件的限制吗?问题是我的应用程序之一报告“打开文件太多”。
我有
ulimit -n
1024
但
cat /proc/sys/fs/file-max
6578523
和
cat /proc/sys/fs/file-nr
1536
所以我已经有 1536 > 1024。ulimit -n
那是什么呢?这很令人困惑。
答案1
ulimit
显示每个进程的最大值。下面的两个文件/proc
显示了系统范围的编号。
从服务器故障:
file-max
是在内核级别强制执行的最大文件描述符 (FD),所有进程都不能在不增加的情况下超过该值。是ulimit
在进程级别强制执行的,该级别可能小于file-max
。
从http://www.linuxvox.com/post/what-are-file-max-and-file-nr-linux-kernel-parameters/:
是什么
file-max
?我们应该将其调整到什么程度?Linux 文档定义表示file-max
Linux 内核将分配的文件句柄的最大数量。[...]
我如何知道我的服务器是否即将达到此限制?运行命令:
cat /proc/sys/fs/file-nr
。这将返回三个值,分别表示已分配的文件句柄的数量、已分配但未使用的文件句柄的数量以及文件句柄的最大数量。请注意,这file-nr
不是一个可调参数。它仅供参考。在我的服务器上,返回:3488 0 793759
。这意味着目前我的服务器仅分配了 793,759 分配限制中的 3488,并且目前没有达到此限制的危险。