前言
Linux 系統的預設最大打開的檔案數量 (nofile) 只有 1024 個,這將影響到系統的效能。在高負載的情況下,各種程式都可能會出現 Too many open files
的錯誤,這是因為系統無法打開更多的檔案。
在 Linux 系統中,有一句名言:「一切皆檔案」,這意味著在 Linux 系統中,所有的資源都是以檔案的形式存在的,包括硬體設備、網路設備、進程、記憶體等等,所以在 Linux 系統中,打開檔案的數量是非常重要的。
特別是在使用 PVE 或者 ESXi 等虛擬化平台時,會更容易出現 Too many open files
的錯誤,這是因為虛擬化平台需要打開大量的檔案來管理虛擬機器。
優化方法
設定最大打開的檔案數量
調整最大打開的檔案數量,這將臨時生效,重啟後失效。
|
|
修改 /etc/sysctl.conf
,加入以下內容,然後執行 sysctl -p
即可永久生效。
|
|
修改 /etc/security/limits.conf
,加入以下內容,然後重新登入後生效。
|
|
以上的數值 16777216
(算式: 2^24) 是根據系統的實際情況來設定的,可以根據實際情況進行調整。
file-max
的預設上限數值是 1048576
(算式: 2^20),nofile
的上限無法超過 file-max
的數值。
所以如果使用 ulimit
指令時出現 Permission denied
錯誤,這並不是真的沒有權限,而是因為 file-max
的數值太小。