linux的/proc/sys/fs/file-max決定了當前核心可以開啟的最大的檔案控制代碼數。
cat /proc/sys/fs/file-max
修改系統最大開啟檔案描述符數:
臨時設定:echo 1000000 > /proc/sys/fs/file-max
永久設定:修改/etc/sysctl.conf檔案,增加fs.file-max = 1000000
準確的檢視fd使用總數的命令是:
cat /proc/sys/fs/file-nr
錯誤的查詢fd使用總數的命令是:
lsof |wc -l
1.lsof 的結果包含了並非以fd形式開啟的檔案,比如用mmap方式訪問檔案(fd一欄顯示為mem),實際並不占用fd。
2.centos 7的lsof(我這裡lsof -v的版本號是4.87)是按pid/tid/file的組合對應一行,不是一行乙個fd。同乙個程序如果多個執行緒訪問同乙個檔案通常只需要開啟一次、占用乙個fd,但在lsof中就顯示多行。
如果用lsof -p ,則不按tid顯示,結果數少很多。但仍包含了沒有使用fd的檔案。
臨時設定:ulimit -n 1000000。
永久設定:修改/etc/security/limits.conf檔案,增加下面的行
* hard nofile 1000000
* soft nofile 1000000
root hard nofile 1000000
root soft nofile 1000000
修改後需要重啟服務
[root@localhost cloud-game-web]# cat /proc/5772/limits
limit soft limit hard limit units
max cpu time unlimited unlimited seconds
max file size unlimited unlimited bytes
max data size unlimited unlimited bytes
max stack size 8388608 unlimited bytes
max core file size 0 unlimited bytes
max resident set unlimited unlimited bytes
max processes 62496 62496 processes
max open files 4096 4096 files
max locked memory 65536 65536 bytes
max address space unlimited unlimited bytes
max file locks unlimited unlimited locks
max pending signals 62496 62496 signals
max msgqueue size 819200 819200 bytes
max nice priority 0 0
max realtime priority 0 0
max realtime timeout unlimited unlimited us
當前程序開啟最大控制代碼數是4096
檢視當前程序的開啟檔案數量:lsof -p pid | wc -l (lsof -p 1234 | wc -l )
嚴格說lsof -p pid | wc -l查詢的資料不準確,裡面含有重複的控制代碼檔案數,已經mem占用也包含了
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 bl...
linux檔案控制代碼數
1 問題闡述 too many open files 顧名思義即開啟過多檔案數。不過這裡的files不單是檔案的意思,也包括開啟的通訊鏈結 比如socket 正在監聽的埠等等,所以有時候也可以叫做控制代碼 handle 這個錯誤通常也可以叫做控制代碼數超出系統限制。2 產生的原因 經常在使用linu...
Linux檔案控制代碼數配置
1 單程式控制程式碼數限制 檢視配置的控制代碼數 ulimit n cat etc security limits.conf soft nofile 655360 hard nofile 655360 2 全域性控制代碼數限制 cat proc sys fs file max 3 分析控制代碼數常用...