可以在任何Linux系统(特别是ubuntu 10.04)中使用的文件描述符的上限是多少?
我使用的是Ubuntu 10.04(64位),服务器的CPU架构是x86_64,客户端是i686。现在我把fd-limit增加到400000。
日Thnx
答案 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_files
是fs.file-max
的设置。每1MB内存最终约为100(10%)
答案 1 :(得分:4)
每个文件描述符占用一些内核内存,所以在某些时候你会耗尽它。话虽如此,对于使用基于事件(epoll on Linux)服务器体系结构的服务器部署而言,多达十万个文件描述符并非闻所未闻。所以400k并非完全不合理。
关于第二个问题,请参阅/ proc / PID / fd /或/ proc / PID / fdinfo目录。