Centos7 出現"Too many open files"等文件打開太多等錯誤解決方案

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章