使用试验和错误,我发现我可以给ulimit -Hn
而不得到错误的最大数量是1048576
。这个数字从何而来?我的sys.fs.file-max
是20000500
(2000万)
实际上,这个限制可以增加。设置fs.nr_open=5242880
在/etc/sysctl.conf
中,运行sysctl -p
并重新登录。你的极限就是现在500万年!
实际上,这是在Linux内核中硬编码的,在fs/file.c
:
int sysctl_nr_open __read_mostly = 1024*1024;
并等于您指定的数字。
试图使其无限的相关提交:
- https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=0c2d64fb6cae9aae480f6a46cfe79f8d7d48b59f
- https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=60fd760fb9ff7034360bab7137c917c0330628c2
看起来从那以后就没人碰过了