sysctl では fs.nr_open 制限を設定できません。

sysctl では fs.nr_open 制限を設定できません。

fs.nr_opensysctlを介してデフォルト以外の値に設定しようとしています(学習目的で)。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.confPS: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に滞在したいと思います。

関連情報