最大打开文件限制是多少?

最大打开文件限制是多少?

我正在开发一个相当大的项目,最近不得不将设置提高nofile到 500,000 以上。我尝试过了在 /etc/security/limits.d/99-users-nofile.conf 中将其更改为 500 万,但后来我不再被允许登录。在看到其他人有同样的问题后,我最终从替代介质启动并将值改回,但我对此一无所知实际最大值nofile是多少。

答案1

在我的 Ubuntu 20.04 上,限制nofile是 (2^20):

*                hard    nofile          1048576

奇怪的是,如果我加 1,数字就会变成 524288 (2^19)。

此限制是针对每个进程的。所有进程的总限制为 2^63-1:

$ cat /proc/sys/fs/file-max
9223372036854775807

当前打开的文件数是第一列:

$ cat /proc/sys/fs/file-nr
74144   0       9223372036854775807

在我的服务器上我已经运行:

ulimit -n 1048576
open_files() { perl -E 'for(1..'$1') { open($f{$_},"<","/dev/null") || die $_;} say "Done"; sleep 10000'; }
export -f open_files
seq 20000 | time parallel --nice 10 -uj0 open_files 30000

运行没有问题并打开 600M 文件:

$ cat /proc/sys/fs/file-nr
600320672       0       9223372036854775807

所以实际限制显然更高。

相关内容