一尘不染

linux文件描述符限制如何工作?

linux

有人告诉我,我的服务器拒绝在特定端口接受客户端网络连接可能是由于缺少文件描述符所致。我查找了所有内容,并在此处阅读了有关内容:http
:
//www.netadmintools.com/art295.html

所以我测试了我的系统,我得到了:

cat /proc/sys/fs/file-nr
1088    0   331287

这是什么意思?我的限制很高,但是我有0个可用的文件描述符?为什么?如何为我的服务器解决此问题?

即使关闭服务器后,第二列实际上仍为0,甚至在引导后也始终为0!


阅读 266

收藏
2020-06-07

共1个答案

一尘不染

您想查看/ proc / sys / fs / file-max

从最近的linux / Documentation / sysctl / fs.txt中:

file-max和file-nr:

内核动态分配文件句柄,但到目前为止,它并没有再次释放它们。

file-max中的值表示Linux内核将分配的最大文件句柄数。当您收到许多有关文件句柄用尽的错误消息时,您可能希望增加此限制。

从历史上看,file-nr中的三个值表示已分配的文件句柄数,已分配但未使用的文件句柄数以及最大文件句柄数。Linux
2.6始终将0表示为空闲文件句柄数-这不是错误,这仅表示分配的文件句柄数与使用的文件句柄数完全匹配。

尝试分配比file-max更大的文件描述符的尝试由printk报告,请查找“ VFS:已达到file-max限制”。

编辑:根本的错误可能不是系统用尽了全局文件描述符,而仅仅是您的进程。问题似乎可能是select的最大大小限制。

2020-06-07