본문 바로가기
프로그래밍/Linux, Unix

CENTOS ulimit 설정 방법 ( bash: fork: Resource temporarily unavailable )

by 원피스랜드 2021. 1. 9.
반응형

 

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" 발생할수 있다

이것도 심심치 않게 발생합니다.

 

 


CentOS 5.x버전의 nproc(Max User Processes) 기본 값 


$ ulimit -a | grep processes
max user processes              (-u) 4095


CentOS 6.x버전부터는

/etc/security/limit.conf에 

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 수정


ulimit 명령을 통한 변경

-n –u 를 사용하여 max user process 와 open files 개수를 수정 합니다.
# ulimit -n 2048  << open files 갯수 수정
# ulimit -u 4096  << max user process 갯수 수정
# ulimit -a



open files                      (-n) 2048
max user processes              (-u) 4096



 

유저별로 변경이 가능해요 !!

이상 포스팅 마칠게요.

반응형

댓글