无法通过 sysctl 设置 fs.nr_open 限制

无法通过 sysctl 设置 fs.nr_open 限制

我正在尝试通过 sysctl (出于学习目的)设置fs.nr_open为默认值以外的不同值1048576

这些是系统启动后的 sysctl 设置:

vud@ubuntu:~$ sudo sysctl -a | grep -E '(fs.nr_open|fs.file-max)'
fs.file-max = 9223372036854775807
fs.nr_open = 3048576

这是 pid 1 限制:

vud@ubuntu:~$ cat /proc/1/limits | grep 'open files'
Max open files            1048576              1048576              files 

我需要更改这个硬限制,但实际上我认为 sysctl 更改应该可以解决问题。

在我的测试中,我启动一个可执行文件并检查限制是否适用。

linda@ubuntu:/opt$ ./test-limits &
[1] 2371

linda@ubuntu:/opt$ cat /proc/2371/limits | grep 'open files'
Max open files            1024                 1048576              files 

我假设该值是从 pid 1 继承的

PS:我知道可以通过/etc/security/limits.confPAM 用户和/etc/systemd/system.conf服务设置限制。 limit.conf 是空的,对于 systemd 实际上我能够创建测试服务并将 nofile 设置为 1048576 以外的数字。

vud@ubuntu:~$ systemctl status test-limits
● test-limits.service - Testing service limits
     Loaded: loaded (/etc/systemd/system/test-limits.service; disabled; vendor preset: enabled)
     Active: active (running) since Thu 2021-11-18 05:40:21 PST; 5s ago
   Main PID: 2237 (test-limits)

vud@ubuntu:~$ cat /proc/2237/limits | grep 'open files'
Max open files            1024                 2048576              files 
    
vud@ubuntu:~$ cat /etc/systemd/system.conf | grep NOFILE
DefaultLimitNOFILE=1024:2048576

但就我而言,我想在实践中进行实验并了解如何通过不同的方式设置限制并暂时停留在 sysctl 上。

相关内容