Linux中文件描述符的上限

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

我使用Ubuntu 10.04(64位)和我的CPU架构的服务器是x86_64和客户端它是i686。 现在我已经把我的fd-limit提高到了400000。

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

日Thnx

Solutions Collecting From Web of "Linux中文件描述符的上限"

你想看看/ 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%)

每个文件描述符占用一些内核内存,所以在某些时候你会耗尽内存。 也就是说,在使用基于事件的(Linux上的epoll)服务器体系结构的服务器部署中,高达十万个文件描述符是闻所未闻的。 所以40万不是完全不合理的。

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