Linux
不能像我想的那樣設置 ulimit -n
我只想設置 ulimit -n (每個程序最大打開文件數)並讓設置在重新啟動後繼續存在,但事實證明這很困難。
我不知道還有什麼地方可以更改以允許設置它。
root@z:~# cat /etc/sysctl.conf | grep file-max fs.file-max = 2000000 root@z:~# cat /etc/security/limits.conf | grep nofile # - nofile - max number of open files * soft nofile 2000000 * hard nofile 2000000 root@z:~# sudo sysctl -p | grep file fs.file-max = 2000000 root@z:~# ulimit -n 2000000 -su: ulimit: open files: cannot modify limit: Operation not permitted root@z:~# whoami root
另一方面,這個較低的設置有效:
ulimit -n 1048576
請讓我知道如何將每個程序的限制設置為 2000000,並且要在重新啟動後維護該設置,我使用的是 Ubuntu 18.04
# ulimit -n 1048576 # ulimit -n 2000000 bash: ulimit: open files: cannot modify limit: Operation not permitted # sysctl fs.nr_open fs.nr_open = 1048576 # sysctl fs.nr_open=2000000 fs.nr_open = 2000000 # ulimit -n 2000000 # ulimit -n 2000000
/proc/sys/fs/nr_open
該文件對
RLIMIT_NOFILE
可以提高資源限制的值施加了上限(請參閱 getrlimit(2))。對於非特權程序和特權程序都強制執行此上限。此文件中的預設值為 1048576。另一方面,
file-max
是所有程序的限制:
/proc/sys/fs/file-max
該文件定義了系統範圍內所有程序的打開文件數限制。遇到此限制時失敗的系統呼叫將失敗並顯示錯誤 ENFILE。
並不是說我完全不知道是否有足夠多的打開文件會導致其他問題。