"Too many open files" 에러
- 원인 : 프로세스가 OS에 요청할 수 있는 리소스의 양 (= nofile)의 limit을 프로세스가 넘었기 때문.
- 해결 : limit을 늘려준다.
단, 프로세스 자원 한도를 늘려줄 때는 계정 & 프로세스 모두 늘려줘야 한다.
각 프로세스의 limit은 프로세스가 실행되는 계정의 limit을 기반하기 때문이다.
limit 은 hard, soft 두 가지 타입이 있다.
- hard limit
- root 계정에서만 세팅 가능
→ 다른 계정으로는 limits.conf 파일 수정하고 저장이 안 된다. - 절대 넘을 수 없다.
- root 계정에서만 세팅 가능
- soft limit
- 넘어도 경고 이메일 정도.. 큰 문제가 되지 않는다.
ulimit
- 사용자별(user) 프로세스의 자원 한도(limit)를 관리하는 명령어
- 옵션
- -a : 모든 limit 값 출력
- -aH : hard limit
- -aS : soft limit
$ ulimit -aH
$ ulimit -aS
- nofile : 사용자별 오픈할 수 있는 파일 개수 (리눅스에서는 모든 개체를 파일로 본다.) - open files
- nproc : 사용자별 사용할 수 있는 프로세스 최대 개수 - max user processes
수정하는 방법
- 영구 수정
https://60cod.tistory.com/514 - ulimit 명령어로 임시 수정
- 옆에 붙은 알파벳 이용
- ulimit으로 변경할 때는 hard, soft 값이 동시에 변경된다.
- 세션이 끊기면 초기화 된다!
# nofile 변경
$ ulimit -n [값]
# nproc 변경
$ ulimit -u [값]
'업무 > 업무 중 에러' 카테고리의 다른 글
[MobaXterm] JAVA 설치되어 있는데 버전 확인이 안 될 때 -bash: java: command not found (해결 못함) (0) | 2023.02.01 |
---|