fs.nr_open
sysctlを介してデフォルト以外の値に設定しようとしています(学習目的で)。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から継承されたとします。
/etc/security/limits.conf
PS:PAMユーザーとサービスを通じて/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に滞在したいと思います。