Linux中文件描述符的上限

neb*_*ebi 13 linux

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

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

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

日Thnx

ask*_*ish 14

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

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

file-max和file-nr:

内核动态分配文件句柄,但是它还没有再次释放它们.

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

从历史上看,file-nr中的三个值表示已分配文件句柄的数量,已分配但未使用的文件句柄的数量以及最大文件句柄数.Linux 2.6总是报告0作为空闲文件句柄的数量 - 这不是错误,它只是意味着分配的文件句柄数与使用的文件句柄数完全匹配.

使用printk报告尝试分配比file-max更多的文件描述符,查找"VFS:达到文件最大限制".

2.6内核使用经验法则file-max根据系统中的内存量进行设置.fs/file_table.c2.6内核中的一个片段:

/*
 * 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);
Run Code Online (Sandbox Code Playgroud)

files_stat.max_files是设置fs.file-max.每1MB内存最终约为100(10%)