單個程序最多允許開啟的檔案控制代碼數(包括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...