TELNET 으로 사용자 계정 접속시 에러 메세지 발생 : bash fork 자원이 일시적 으로 사용 불가능 함
-bash-4.1$ pwd
-bash-4.1$ who
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: Resource temporarily unavailable
개발자로 살다 보면 심심치 않게 만난다.
CentOS 버전 별 nproc 값에 의한 Max process 제한에 걸려 위와같은 메세지가 발생한다.
max user process 기본 값인 1024 를 초과한 경우 이다.
ulimit 은 무엇인가요?
ulimit는 프로세스의 자원 한도를 설정하는 명령이라고 생각 하면 됩니다.
- ulimit [옵션] 값
-a : 모든 제한 사항들을 다 보여줌 all
-c : 최대 코어 파일 사이즈
-d : 프로세스 데이터 세그먼트의 최대 크기
-f : shell에 의해 만들어질 수 있는 파일의 최대 크기
-s : 최대 스택 크기
-p : 파이프 크기
-n : 오픈 파일의 최대수
-u : 오픈파일의 최대수
-v : 최대 가상메모리의 양
-S : soft 한도
-H : hard 한도
# ulimit -a => Soft 설정
# ulimit -aH => Hard 설정
- 각 항목의 설명을 보자
core file size (blocks, -c) 0 => 코어파일의 최대크기 data seg size (kbytes, -d) unlimited => 프로세스의 데이터 세그먼트 최대크기 scheduling priority (-e) 0 file size (blocks, -f) unlimited => 쉘에서 생성되는 파일일 최대크기 pending signals (-i) 14943 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited => resident set size의 최대 크기(메모리 최대크기) open files (-n) 1024 => 한 프로세스에서 열 수 있는 open file descriptor의 최대 숫자(열수 있는 최대 파일 수) pipe size (512 bytes, -p) 8 => 512-바이트 블럭의 파이프 크기 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 10240 cpu time (seconds, -t) unlimited => 총 누적된 CPU 시간(초) max user processes (-u) 1024 => 단일 유저가 사용이 가능한 최대 프로세스 갯수!! virtual memory (kbytes, -v) unlimited => 쉘에서 사용가능 한 가상 메모리의 최대 용량 file locks (-x) unlimited |
openfiles 갯수에서 막히면 "Too many open files error" 발생할수 있다
이것도 심심치 않게 발생합니다.
nproc에 특별한 설정을 하지 않는 한 max user process는 1,024를 기본값으로 가진다.
1) max user process 갯수 확인 $ ulimit -a max user processes (-u) 1024 이 설정은 CentOS 6.x버전부터 사용자 로그인 시 하단 파일에서 1,024 값을 기본값으로 세팅하며, 시스템 리소스를 제한하고자 새로 추가된 설정입니다.
2) max user process 수정
|
유저별로 변경이 가능해요 !!
이상 포스팅 마칠게요.
댓글