Linux單程序開啟檔案控制代碼數上限

2021-07-11 10:50:14 字數 1250 閱讀 6483

單個程序最多允許開啟的檔案控制代碼數(包括socket連線數)是有限制的,當大於這個系統限制時,程式會丟擲大量的無法開啟檔案的報錯。

#ulimit

-acore file size (blocks, -c) unlimited

data seg size (kbytes, -d) unlimited

file size (blocks, -f) unlimited

pending signals (-i) 515235

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

stack size (kbytes, -s) 10240

cpu time (seconds, -t) unlimited

max user processes (-u) 515235

virtual memory (kbytes, -v) unlimited

file locks (-x) unlimited`

其中open files表示的是單個程序最多允許開啟的檔案控制代碼數(soket連線數也算在內),預設值是1024。對於一般的程式來說,這個值是足夠的,但是對於很多需要開啟大量檔案或者大量socket連線的程式來說,這個值就不夠了。例如web端用於儲存使用者登入資訊和廣告快取資訊的memcached程式,單個程序可以開啟的socket連線數線上設定為8192。

要解決上述問題,可以通過如下方式修改此限制:

用root賬戶登入伺服器,修改/etc/security/limits.conf檔案,在檔案最後新增2行

* soft nofile 8192

* hard nofile 8192

表示把此限制由預設的1024修改為8192。

修改之後,不需重啟伺服器,只需退出當前ssh遠端連線,重新登入之後重啟相關程式即可生效。

Linux下檢視程序開啟的檔案控制代碼數

檢視系統預設的最大檔案控制代碼數,系統預設是1024 ulimit n 1024 檢視當前程序開啟了多少控制代碼數 lsof n awk sort uniq c sort nr more 131 24204 57 24244 57 24231 其中第一列是開啟的控制代碼數,第二列是程序id。可以根據...

Linux下檢視程序開啟的檔案控制代碼數

檢視系統預設的最大檔案控制代碼數,系統預設是1024 ulimit n 1024 檢視當前程序開啟了多少控制代碼數 lsof n awk sort uniq c sort nr more 131 24204 57 24244 57 24231 其中第一列是開啟的控制代碼數,第二列是程序id。可以根據...

Linux下檢視程序開啟的檔案控制代碼數

ulimit n 1024 檢視當前程序開啟了多少控制代碼數 lsof n awk sort uniq c sort nr more 131 24204 57 24244 57 24231 其中第一列是開啟的控制代碼數,第二列是程序id。可以根據id號來檢視程序名。ps aef grep 24204...