ulimit -a 查看用戶進程級的能夠打開文件句柄的數量,Centos7默認是1024。
max-file 表示系統級別的能夠打開的文件句柄的數量。是對整個系統的限制,並不是針對用戶的。
ulimit -n 控制進程級別能夠打開的文件句柄的數量。提供對shell及其啓動的進程的可用文件句柄的控制,這是進程級別的。
對於服務器來說,file-max和ulimit都需要設置,否則會出現文件描述符耗盡的問題。
一般如果遇到文件句柄達到上限時,會碰到"Too many open files"或者Socket/File: Can’t open so many files等錯誤。
爲了讓服務器重啓之後,配置仍然有效,需要用永久生效的配置方法進行修改。
1、max-file:
1)查看系統級別的能夠打開的文件句柄的數量,Centos7默認是794168
# cat /proc/sys/fs/file-max
794168
2)系統級打開最大文件句柄的數量永久生效的修改方法,修改文件,文件末尾加入配置內容:
# vim /etc/sysctl.conf
fs.file-max = 2000000
3)然後執行命令,使修改配置立即生效:
# sysctl -p
2、ulimit:
2.1、這裏設置的是當前shell的當前用戶的打開的最大限制,如果當前用戶打開多個shell,則每個shell都能打開該最大值
# ulimit -n
1024
2.2、進程級打開文件句柄數量永久生效的修改方法,修改文件,文件末尾加入配置內容:
1)這裏限制一個用戶的所有shell能打開的最大數:
# vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
修改以後,需要重新登錄才能生效。
2)如果需要設置當前用戶session立即生效,還需要執行:
# ulimit -n 65535
對於服務器,一般修改進程級的最大打開文件句柄數即可(系統默認1024,有點小)。一般不需要調整系統級的最大數。
如果出現了達到系統級別最大限制時,也需要同步調整系統級的最大數的。
參考鏈接:https://blog.csdn.net/sunny05296/article/details/54952009