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.conf추신: 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에 머물고 싶습니다.

관련 정보