nr_open 및 file_max 변경 시 발생하는 에러
nr_open과 file_max는 커널 파라미터로 시스템에서 파일을 열 때의 갯 수 제한을 설정하는 데 사용된다.
nr_open
nr_open은 프로세스가 열 수 있는 최대 파일 디스크립터의 수를 정한다. 커널은 시스템 전체에서 매우 많은 파일 디스크립터를 가질 수 있도록 설정된다.
/proc/sys/fs/nr_open 파일에 값을 넣는 것으로 설정 할 수 있다.
echo 1048576 > /proc/sys/fs/nr_open
영구 적용을 위해서 /etc/sysctl.conf 파일에 추가하거나 별도의 설정 파일을 /etc/sysctl.d 디렉토리 하위에 파일을 만들어 추가해야 한다.
fs.nr_open = 1048576
file_max
file_max는 시스템 전체에서 열 수 있는 최대 파일 디스크립터의 수를 정한다. 시스템의 모든 프로세스가 열 수 있는 파일 디스크립터의 최대치를 설정한다.
/proc/sys/fs/file-max 파일에 값을 넣는 것으로 설정 할 수 있다.
echo 2097152 > /proc/sys/fs/file-max
영구 적용을 위해서 /etc/sysctl.conf 파일에 추가하거나 별도의 설정 파일을 /etc/sysctl.d 디렉토리 하위에 파일을 만들어 추가해야 한다.
fs.file-max = 2097152
route 명령어 출력 지연
file_max 값과 nr_open sysctl -p 옵션으로 적용하지 않을 경우 새로운 세션이나 파일을 생성 할 수 없게 된다. 따라서 명령어를 수행하면 아래와 같이 로그가 발생한다.
fs.file-max = 7766279631452241919
fs.nr_open = 2147483584
- 문제 발생 확인 1
lsof: WARNING: can't stat() tracefs file system /sys/kernel/debug/tracing
Output information may be incomplete.
- 해결 방법
$ umount /sys/kernel/debug/tracing
아래 로그의 경우 위와 마찬가지로 발생하는 이유로 새로운 세션을 열지 못해 발생한다. 해당 문제를 해결 하기 위해서는 서버 리부팅이 필요하며, /var/log/secure 를 확인하면 알 수 있다.
- 문제 발생 확인 2
$ sudo passwd suser
sudo: pam_open_session: System error
sudo: policy plugin failed session initialization
$ tail -f /var/log/secure
...
Feb 15 15:13:34 SNSU_AOM01 su[16445]: pam_limits(su-l:session): Could not set limit for 'nofile': Operation not permitted
Feb 15 15:13:34 SNSU_AOM01 su[16445]: pam_systemd(su-l:session): Cannot create session: Already running in a session or user slice
Feb 15 15:13:34 SNSU_AOM01 su[16445]: pam_unix(su-l:session): session opened for user root by suser(uid=1001)
...
- 해결 방법
$ sysctl -p
or
$ reboot
'리눅스 > 이슈 확인' 카테고리의 다른 글
[ISSUE] 네트워크 명령어 지연 (0) | 2023.11.13 |
---|---|
[ISSUE] 리눅스 9시간 차이 (RTC / TIMEZONE / Local time) (0) | 2023.01.26 |
[ISSUE] pip3 를 통한 install 실패 현상 (0) | 2022.08.30 |
[ISSUE] Dell vxrail / VMware 3개 이상의 VMXNET3 인터페이스 추가 시 인터페이스 순서가 바뀌는 현상 (0) | 2022.05.19 |
[ISSUE] 서버의 ssh 접속 불가 현상 (port 22) (0) | 2022.02.08 |