正常在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
註銷再從新登錄即生效,或者直接重啓也行.登錄