正常在Linux下,对打开的文件描述符的数量限制设置有两个地方:html
sudo sysctl -a | grep file-max
是全局最多可打开文件描述符设置sudo ulimit -n
是单进程最多可打开的文件描述符设置全局的修改比较容易,只须要在/etc/sysctl.conf
中添加fs.file-max
并指定值便可,如fs.file-max = 6553500
.shell
单进程就比较坑了,我当前用的是Ubuntu 18.04,若仅是Server版本Ubuntu或是用SSH登录的状况下,只需在/etc/security/limits.conf
添加以下:code
* soft nofile 1024000 * hard nofile 1024000 # 16.04下用 * 会无效,须要指定用户如: root soft nofile 1024000 root hard nofile 1024000
不过种方式在图形界面下,这并不起效, 除非是 SSH 登陆来的.htm
根据systemd-system.conf的manpage说明,你只需在/etc/systemd/system.conf
或/etc/systemd/user.conf
中设置DefaultLimitNOFILE=
的值,或在 /etc/systemd/system.conf.d/
或etc/systemd/user.conf.d/
目录下新建一个 conf 文件,并在其中指定DefaultLimitNOFILE=
的值便可。进程
实际这里有个坑。get
若是仅在/etc/systemd/user.conf
文件或者/etc/systemd/user.conf.d
目录下指定的DefaultLimitNOFILE=
值,那么它最大依旧只能是4096.it
真正要改的是/etc/systemd/system.conf
文件或/etc/systemd/system.conf.d/
目录下的 conf 文件,设定DefaultLimitNOFILE=
的值便可。class
如DefaultLimitNOFILE=1024000
,而后执行systemctl daemon-reexec
注销再从新登录即生效,或者直接重启也行.登录