Linux
如何知道我們是否達到了 fs.file-max 的最大值
在我們的 Linux RHEL 伺服器
fs.file-max
上設置為100000
sysctl -p | grep fs.file-max fs.file-max = 100000
據我了解,
file-max
核心參數指的是打開的文件描述符,並file-nr
為我們提供了目前打開的文件描述符的數量。但lsof
列出所有打開的文件,包括不使用文件描述符的文件——例如目前工作目錄、記憶體映射庫文件和可執行文本文件。以下是否
lsof
真的很好地表明我們已經達到了fs.file-max
價值?lsof | wc -l
或者
[[ `lsof | wc -l` -gt 100000 ]] && echo "please increase the fs.file-max"
其他相關連結 -如何顯示打開的文件描述符但不使用 lsof 命令
這個
[[ `lsof | wc -l` -gt 100000 ]] && echo "please increase the fs.file-max"
會產生誤導。請參閱下面的參考資料。
基於RHEL 5 Tuning,
cat /proc/sys/fs/file-nr
可以使用 的輸出。我們可以比較輸出的第一個和最後一個欄位。第一個欄位顯示分配的文件句柄總數,最後一個欄位顯示可以分配的最大文件句柄。所以設置一個檢查,一旦達到 90%,就會顯示一個警告:[[ $(echo "$(cat /proc/sys/fs/file-nr | cut -f1) / $(cat /proc/sys/fs/file-nr | cut -f3) * 100" | bc -l) -ge 90 ]] \ && echo "90% reached. Please increase the fs.file-max"
lsof
和file-nr
輸出之間的一些區別:file-max 核心參數指的是打開的文件描述符,而 file-nr 為我們提供了目前打開的文件描述符的數量。但是 lsof 會列出所有打開的文件,包括不使用文件描述符的文件——例如目前工作目錄、記憶體映射庫文件和可執行文本文件。
見參考