Debian 莱尼。对于每个用户,包括 root:
# cat /proc/sys/fs/file-max
262144
# sysctl fs.file-max
fs.file-max = 262144
# ulimit -Hn
1024
# ulimit -Sn
1024
Run Code Online (Sandbox Code Playgroud)
文件/etc/security/limits.conf
没有未注释的行。
它从哪里得到那个 1024?
该fs.file-max
sysctl的显示有多少个文件句柄可以分配系统范围内的,而ulimit
资源限制是每个进程(或每个UID)。前者描述于Documentation/sysctl/fs.txt:90
:
文件最大和文件编号: file-max 中的值表示文件的最大数量- Linux 内核将分配的句柄。当你得到很多 关于耗尽文件句柄的错误消息,您可能 想增加这个限制。
1024 个文件 rlimit 没有在任何地方明确设置;它被硬编码到内核中作为 pid 1 的默认值,位于include/asm-generic/resource.h:81
:
/* * init 任务的启动时间 rlimit 默认值: */ #define INIT_RLIMITS \ { \ ... [RLIMIT_NOFILE] = { INR_OPEN_CUR, INR_OPEN_MAX }, \ ... }
其中引用INR_OPEN_CUR
和INR_OPEN_MAX
来自include/linux/fs.h:26
:
#define INR_OPEN_CUR 1024 /* nfile rlimits 的初始设置 */ #define INR_OPEN_MAX 4096 /* nfile rlimits 的硬限制 */
其他进程只是从init
(或任何 pid 1)继承限制。
为什么/proc/1/limits
在 Debian 上报告 1024 作为软和硬nfile 限制?我不知道:sysvinit 源代码和 Debian 内核补丁都没有改变它。可能是 initramfs 脚本。(我运行 Arch,它的默认值为 1024/4096。)
归档时间: |
|
查看次数: |
4111 次 |
最近记录: |