在任何Linux系统(特别是Ubuntu 10.04)中可以使用的文件描述符的上限是多少?
我正在使用Ubuntu 10.04(64位),我的服务器CPU架构为x86_64,客户端为i686。 现在,我已将我的fd限制增加到400000。
- 使用大量文件描述符可能会导致什么可能的副作用?
- 我如何知道任何进程使用的文件描述符数量?
谢谢
在任何Linux系统(特别是Ubuntu 10.04)中可以使用的文件描述符的上限是多少?
我正在使用Ubuntu 10.04(64位),我的服务器CPU架构为x86_64,客户端为i686。 现在,我已将我的fd限制增加到400000。
谢谢
/*
* 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%)
每个文件描述符都占用一些内核内存,所以在某个时刻你会耗尽它。话虽如此,在使用基于事件的(Linux上的epoll)服务器架构的服务器部署中,多达十万个文件描述符并不罕见。因此,400k并不完全不合理。
对于第二个问题,请参阅/proc/PID/fd/或/proc/PID/fdinfo目录。