Debian 最大檔案描述符

Debian 最大檔案描述符

德安·萊尼.對於每個用戶,包括 root:

# cat /proc/sys/fs/file-max
262144

# sysctl fs.file-max
fs.file-max = 262144

# ulimit -Hn
1024

# ulimit -Sn
1024

文件/etc/security/limits.conf沒有未註解的行。

1024 從哪裡得到的?

答案1

fs.file-max系統控制顯示可以分配多少個文件句柄全系統,而ulimit資源限制是針對每個進程(或每個 UID)的。前者描述於Documentation/sysctl/fs.txt:90:

文件最大和文件編號:

file-max中的值表示檔案的最大數量
Linux 核心將會指派的句柄。當你得到很多的時候
有關文件句柄用完的錯誤訊息,您可能
想要增加這個限制。

1024 個檔案的 rlimit 沒有在任何地方明確設定;它被硬編碼到內核中作為 pid 1 的預設值,位於include/asm-generic/resource.h:81:

/*
 * 初始化任務的啟動時 rlimit 預設值:
 */
#define INIT_RLIMITS \
{ \
        [RLIMIT_NOFILE] = { INR_OPEN_CUR, INR_OPEN_MAX }, \
}

哪些參考文獻INR_OPEN_CUR來自INR_OPEN_MAXinclude/linux/fs.h:26:

#define INR_OPEN_CUR 1024 /* nfile rlimits 的初始設定 */
#define INR_OPEN_MAX 4096 /* nfile rlimits 的硬限制 */

其他進程只是繼承限制init(或 pid 1)。

為什麼/proc/1/limitsDebian 上報告 1024 都是軟的和硬n 文件限制?我不知道:sysvinit 原始碼和 Debian 核心補丁都沒有改變它。也許是 initramfs 腳本。 (我運行 Arch,預設值為 1024/4096。)

答案2

對於@grawity提出的問題,這個核心提交可以解釋:

提交 0ac1ee0bfec2a4ad118f907ce586d0dfd8db7641
作者:提姆‧加德納
日期:2011 年 5 月 24 日星期二 17:13:05 -0700

    ulimit:將檔案數量的預設硬 ulimit 提高到 4096

至少在 RHEL5.4 中它是 1024/1024,在 RHEL6.2 中它是 1024/4096。

相關內容