업무/업무 중 에러

[Linux] "Too many open files" 에러, ulimit, nofile, nproc 수정 방법 (리소스 제한 설정)

2023. 3. 10. 16:33

"Too many open files" 에러

  • 원인 : 프로세스가 OS에 요청할 수 있는 리소스의 양 (= nofile)의 limit을 프로세스가 넘었기 때문.
  • 해결 : limit을 늘려준다.

 

 

단, 프로세스 자원 한도를 늘려줄 때는 계정 & 프로세스 모두 늘려줘야 한다.

각 프로세스의 limit은 프로세스가 실행되는 계정의 limit을 기반하기 때문이다.

 

 

 

limit 은 hard, soft 두 가지 타입이 있다.

  • hard limit
    • root 계정에서만 세팅 가능 
      다른 계정으로는 limits.conf 파일 수정하고 저장이 안 된다.
    • 절대 넘을 수 없다.
  • soft limit
    • 넘어도 경고 이메일 정도.. 큰 문제가 되지 않는다.

 

 

ulimit

  • 사용자별(user) 프로세스의 자원 한도(limit)를 관리하는 명령어
  • 옵션
    • -a : 모든 limit 값 출력
    • -aH : hard limit
    • -aS : soft limit
$ ulimit -aH
$ ulimit -aS

  • nofile : 사용자별 오픈할 수 있는 파일 개수 (리눅스에서는 모든 개체를 파일로 본다.) - open files
  • nproc : 사용자별 사용할 수 있는 프로세스 최대 개수 - max user processes

 

 


수정하는 방법

  1. 영구 수정
    https://60cod.tistory.com/514

  2. ulimit 명령어로 임시 수정
    • 옆에 붙은 알파벳 이용
    • ulimit으로 변경할 때는 hard, soft 값이 동시에 변경된다.
    • 세션이 끊기면 초기화 된다!
# nofile 변경
$ ulimit -n [값]

# nproc 변경
$ ulimit -u [값]