設置Linux打開文件句柄/proc/sys/fs/file-max和ulimit -n的區別


max-file 表示系統級別的能夠打開的文件句柄的數量。是對整個系統的限制,並不是針對用戶的。

ulimit -n 控制進程級別能夠打開的文件句柄的數量。提供對shell及其啟動的進程的可用文件句柄的控制。這是進程級別的。

 

對於服務器來說,file-max和ulimit都需要設置,否則會出現文件描述符耗盡的問題。

一般如果遇到文件句柄達到上限時,會碰到"Too many open files"或者Socket/File: Can’t open so many files等錯誤。

為了讓服務器重啟之后,配置仍然有效,需要用永久生效的配置方法進行修改。

 

max-file:

查看系統級別的能夠打開的文件句柄的數量,Centos7默認是794168

# cat /proc/sys/fs/file-max

794168

 

系統級打開最大文件句柄的數量永久生效的修改方法,修改文件,文件末尾加入配置內容:

# vim /etc/sysctl.conf

fs.file-max = 2000000

然后執行命令,使修改配置立即生效:

# sysctl -p

 

ulimit:

查看用戶進程級的能夠打開文件句柄的數量,Centos7默認是1024

這里設置的是當前shell的當前用戶的打開的最大限制,如果當前用戶打開多個shell,則每個shell都能打開該最大值

# ulimit -n

1024

 

進程級打開文件句柄數量永久生效的修改方法,修改文件,文件末尾加入配置內容:

這里限制一個用戶的所有shell能打開的最大數:

# vim /etc/security/limits.conf

* soft nofile 65535

* hard nofile 65535

修改以后,需要重新登錄才能生效。

 

如果需要設置當前用戶session立即生效,還需要執行:

# ulimit -n 65535 

 

對於服務器,一般修改進程級的最大打開文件句柄數即可(系統默認1024,有點小)。一般不需要調整系統級的最大數。

如果出現了達到系統級別最大限制時,也需要同步調整系統級的最大數的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM