修改fs.file-max 、soft nofile、fs.nr_open這三個參數(shù)的值來修改進(jìn)程能打開的最大文件描述符數(shù)量
fs.file-max (系統(tǒng)級別參數(shù)):該參數(shù)描述了整個系統(tǒng)可以打開的最大文件數(shù)量。但是root用戶不會受該參數(shù)限制(比如:現(xiàn)在整個系統(tǒng)打開的文件描述符數(shù)量已達(dá)到fs.file-max ,此時root用戶仍然可以使用ps、kill等命令或打開其他文件描述符) 通過 cat /proc/sys/fs/file-max 查看
soft nofile(進(jìn)程級別參數(shù)):限制單個進(jìn)程上可以打開的最大文件數(shù)。只能在Linux上配置一次,不能針對不同用戶配置不同的值;通過 cat /etc/security/limits.conf 查看
fs.nr_open(進(jìn)程級別參數(shù)):限制單個進(jìn)程上可以打開的最大文件數(shù)??梢葬槍Σ煌脩襞渲貌煌闹?nbsp; 通過 cat /proc/sys/fs/nr_open 查看
如果想加大soft nofile,那么hard nofile參數(shù)值也需要一起調(diào)整。如果因?yàn)閔ard nofile參數(shù)值設(shè)置的低,那么soft nofile參數(shù)的值設(shè)置的再高也沒有用,實(shí)際生效的值會按照二者最低的來。
如果增大了hard nofile,那么fs.nr_open也都需要跟著一起調(diào)整(fs.nr_open參數(shù)值一定要大于hard nofile參數(shù)值)。如果不小心把hard nofile的值設(shè)置的比fs.nr_open還大,那么后果比較嚴(yán)重。會導(dǎo)致該用戶無法登錄,如果設(shè)置的是*,那么所有用戶都無法登錄
如果加大了fs.nr_open,但是是用的echo "xxx" > ../fs/nr_open命令來修改的fs.nr_open的值,那么剛改完可能不會有問題,但是只要機(jī)器一重啟,那么之前通過echo命令設(shè)置的fs.nr_open值便會失效,用戶還是無法登錄。所以非常不建議使用echo的方式修改內(nèi)核參數(shù)?。。?br />
正確設(shè)置方法:
vim /etc/sysctl.conf
fs.file-max=1100000 // 系統(tǒng)級別設(shè)置成110萬,多留點(diǎn)buffer
fs.nr_open=1100000 // 進(jìn)程級別也設(shè)置成110萬,因?yàn)橐WC比 hard nofile大
使上面的配置生效sysctl -p
vim /etc/security/limits.conf
// 用戶進(jìn)程級別都設(shè)置成100完
soft nofile 1000000
hard nofile 1000000