我在 Azure 云中的 Ubuntu18.04.1 仿生 VM 上。我正在尝试在系统级别设置文件描述符的最大数量。当我最初登录并运行时,ulimit -n
我得到的值为1024。所以我检查了/etc/security/limits.conf
,但里面没有配置。所以我想也许它在 中是这样配置的cat /proc/sys/fs/file-max
,所以当我检查它时,它被设置为 1426416。所以问题 1:1024 来自哪里?
我可以通过在/etc/security/limits.conf
for nofile
* 和根域中设置一些条目来更改它,并将其提高到 65536,现在ulimit -n
反映了它。所以我的问题 2: 中条目的目的是什么/proc/sys/fs/file-max
?我认为可以使用它来设置sysctl.conf
答案1
文件 /etc/security/limits.conf 用于配置 pam_limits,并且仅影响通过 PAM 堆栈启动的用户和服务。
/proc/sys/fs/file-max 由内核 sysctl 定义,是操作系统启动的进程的设置。
您还可以通过将 LimitNOFILE=1024 添加到单元文件来设置 systemd 服务中的文件限制。
答案2
1024从哪里来?
这是内核的打开文件数量的默认限制,每个进程。这是其中之一资源限制可以为每个进程设置。
进入的目的是什么
/proc/sys/fs/file-max
?
file-max
指定文件句柄的最大数量,对于整个系统。一旦达到此限制,任何进程都将无法打开文件,无论其自身的每个进程限制如何。
nr_open
,在同一目录中,指定最大每个进程的限制。实际使用的值是资源限制(见上文);这决定了最大资源限制可以是多少。