리눅스/이슈 확인

[ISSUE] nr_open 및 file_max 변경으로 인한 로그 발생

ㅎㄷㄹㅁㅇ 2024. 11. 11. 23:45
반응형

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
반응형
TOP