내가 원하는 대로 ulimit -n을 설정할 수 없습니다.

내가 원하는 대로 ulimit -n을 설정할 수 없습니다.

방금 ulimit -n(프로세스당 최대 열린 파일 수)을 설정하고 재부팅 후에도 설정이 유지되도록 하고 싶었지만 이것이 어려운 것으로 판명되었습니다.

설정을 허용하기 위해 다른 곳을 변경해야할지 모르겠습니다.

root@z:~# cat /etc/sysctl.conf | grep file-max
fs.file-max = 2000000
root@z:~# cat /etc/security/limits.conf | grep nofile
#        - nofile - max number of open files
* soft     nofile         2000000   
* hard     nofile         2000000
root@z:~# sudo sysctl -p | grep file
fs.file-max = 2000000
root@z:~# ulimit -n 2000000
-su: ulimit: open files: cannot modify limit: Operation not permitted
root@z:~# whoami
root

반면에 다음과 같이 낮은 설정이 효과적입니다.

ulimit -n 1048576

프로세스 당 제한을 2000000으로 설정하는 방법과 재부팅 후 해당 설정을 유지하는 방법을 알려주십시오. Ubuntu 18.04를 사용하고 있습니다.

답변1

# ulimit -n 1048576
# ulimit -n 2000000
bash: ulimit: open files: cannot modify limit: Operation not permitted
# sysctl fs.nr_open
fs.nr_open = 1048576
# sysctl fs.nr_open=2000000
fs.nr_open = 2000000
# ulimit -n 2000000
# ulimit -n
2000000

proc(5) 매뉴얼 페이지:

/proc/sys/fs/nr_open
RLIMIT_NOFILE이 파일은 자원 제한을 늘릴 수 있는 값에 상한을 부과합니다(getrlimit(2) 참조). 이 상한은 권한이 없는 프로세스와 권한이 있는 프로세스 모두에 적용됩니다. 이 파일의 기본값은 1048576입니다.

반면에 file-max모든 프로세스의 한계는 다음과 같습니다.

/proc/sys/fs/file-max
이 파일은 모든 프로세스에 대해 열린 파일 수에 대한 시스템 전체 제한을 정의합니다. 이 한계에 도달했을 때 실패한 시스템 호출은 ENFILE 오류와 함께 실패합니다.

열린 파일이 충분하면 다른 문제가 발생할 수 있는지 여부에 대해 전혀 알지 못합니다.

답변2

이 문제로 한시간 넘게 고생한 끝에 해결했습니다!

  1. 콘텐츠 삭제/etc/security/limits.d/
  2. /etc/security/limits.conf다음과 같이 파일을 삭제 하고 다시 만듭니다.
    vi /etc/security/limits.conf
    root    -   nproc   500000
    root    -   nofile  500000
    myuser  -   nproc   130000
    myuser  -   nofile  130000
    

로그아웃했다가 로그인하면 제한사항이 적용됩니다.

ulimit -n
500000

관련 정보