Linux中文件描述符的上限

时间:2012-10-19 09:04:51

标签: linux

可以在任何Linux系统(特别是ubuntu 10.04)中使用的文件描述符的上限是多少?

我使用的是Ubuntu 10.04(64位),服务器的CPU架构是x86_64,客户端是i686。现在我把fd-limit增加到400000。

  • 使用大号的可能的副作用是什么?文件描述符?
  • 我怎么知道没有。任何进程使用的文件描述符?

日Thnx

2 个答案:

答案 0 :(得分:14)

您想要查看/ 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:达到文件最大限制”。

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_filesfs.file-max的设置。每1MB内存最终约为100(10%)

答案 1 :(得分:4)

每个文件描述符占用一些内核内存,所以在某些时候你会耗尽它。话虽如此,对于使用基于事件(epoll on Linux)服务器体系结构的服务器部署而言,多达十万个文件描述符并非闻所未闻。所以400k并非完全不合理。

关于第二个问题,请参阅/ proc / PID / fd /或/ proc / PID / fdinfo目录。