如何解決Linux下Too many open files問題
引起的原因就是進程在某個時刻打開了超過系統限制的文件數量以及通訊鏈接數。 通過命令ulimit -a可以查看當前系統設置的最大句柄數是多少
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 31767
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 31767
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
可以看到,open files的配置是1024,可以通過如下命令將open files增加
ulimit -n 65535
這種修改方式可以臨時把文件打開數量增加到65535,但是系統重啟后這個配置會失效。
還有一種方式是修改系統的配置文件,以Ubuntu為例,配置文件默認在
/etc/security/limits.conf
在這個配置文件中增加
* soft nofile 65535* hard nofile 6553
如果要查看某個進程目前打開的句柄數量,可以通過如下命令:
lsof -p 進程ID|wc -l
此外,如果用supervisor托管和啟動項目,會遇到這個配置無法生效的問題,原因在于supervisor會默認配置打開的句柄數量是1024,
如果要查看某個進程最大open files,可以通過這個進程的進程號對應的limits查看
cat /proc/進程ID/limits
其中有一行是:
Max open files10241024bytes
supervisor托管的程序這一行默認都是supervisor配置的最大數量1024,這時需要手動改一下supervisor的配置文件,修改方式如下,以Ubuntu系統為例,找到supervisor的配置文件supervisord.conf
在[supervisord]選項中,增加minfds選項的配置
[supervisord]minfds=65535 ; min. avail startup file descriptors; default 1024
配置完畢后,需要重啟supervisor(以systemctl為例)
systemctl restart supervisor
即可生效
在通過:
cat /proc/進程號/limits
查看下對應進程的可open files的數量
Max open files6553565535bytes
以上就是如何解決Linux下Too many open files問題的詳細內容,更多關于解決Linux下Too many open files問題的資料請關注好吧啦網其它相關文章!
相關文章:
1. 如何安裝win10和win11雙系統?win10和win11雙系統安裝詳細教程2. 國產統一操作系統uos怎么安裝? uos操作系統安裝步驟3. 世界上最流行的操作系統不是Linux或者Windows,而是MINIX4. 統信uos系統怎么進行打印測試頁和刪除打印機?5. Win10系統360瀏覽器搜索引擎被劫持解決方法 6. 蘋果 macOS 11.7.3 更新導致 Safari 收藏夾圖標無法正常顯示7. Win11系統搜索不到藍牙耳機怎么辦?Win11搜索不到藍牙耳機解決方法8. 企業 Win10 設備出現開始菜單和任務欄快捷方式消失問題,微軟展開調查9. UOS系統怎么滾動截圖? UOS滾動截圖的使用方法10. 電腦怎么安裝雙系統?Win11 和 Win7雙系統安裝圖文教程