在任何Linux系统(特别是ubuntu10.04)中可以使用的文件描述符的上限是什么?
我使用的是Ubuntu10.04(64位),服务器的CPU架构是x86_64,而客户端是i686。现在我已经把fd-上限提高到了400000。
丁烯
发布于 2012-10-19 09:12:24
您希望查看/proc/sys/fs/file-max。
来自最近的linux/Documentation/sysctl/fs.txt:
文件-最大值和文件-nr: 内核动态地分配文件句柄,但到目前为止还没有释放它们。 文件-max中的值表示Linux内核将分配的文件句柄的最大数量。当您收到大量关于文件句柄耗尽的错误消息时,您可能希望增加此限制。 历史上,file-nr中的三个值表示分配的文件句柄的数量、已分配但未使用的文件句柄的数量以及文件句柄的最大数量。Linux2.6总是将0作为空闲文件句柄的数量来报告--这不是一个错误,它只是意味着分配的文件句柄的数量与使用的文件句柄的数量完全匹配。 尝试分配比文件-max更多的文件描述符是用printk报告的,查找"VFS: file-max限制达到“。
2.6内核使用经验法则根据系统中的内存量来设置file-max。2.6内核中来自fs/file_table.c的一个片段:
/*
* One file with associated inode and dcache is very roughly 1K.
* Per default don't use more than 10% of our memory for files.
*/
n = (mempages * (PAGE_SIZE / 1024)) / 10;
files_stat.max_files = max_t(unsigned long, n, NR_FILE);files_stat.max_files是fs.file-max的设置。结果是,每1MB的内存就有大约100台。
发布于 2012-10-19 09:13:41
每个文件描述符占用一些内核内存,因此在某个时候您会耗尽它。尽管如此,在使用基于事件的(Linux上的epoll)服务器体系结构的服务器部署中,并不是闻所未闻的多达10万个文件描述符。因此,400 K并非完全不合理。
关于第二个问题,请参见/proc/PID/fd/ or /proc/PID/fdinfo目录。
https://stackoverflow.com/questions/12970853
复制相似问题