Linux ETC

ulimit 설정 관련

2015.07.29 20:56

호스트웨이 조회 수:77654

Ulimit 이란?

ulimit 프로세스의 자원 한도를 설정하는 명령으로, soft한도와 hard한도 두가지가 있습니다.

 

sof t : 새로운 프로그램을 생성하면 기본으로 적용되는 한도

hard : 소프트한도에서 최대로 늘릴 있는 한도

 

 

apache 같이 서비스를 운영 동접자가 많은 경우 구동되는apache 프로세스 수와 해당  프로세스가 처리하게되는 파일 또한 증가 하게 됩니다.

 

이에 따라 시스템 적으로도 해당 요청에 대응 있도록 상향 설정이 필요로 하며, 해당

설정을 조정 하는 방법에 대해서 다루도록 하겠습니다.

 

 

 

 

ulimit [옵션]

 

-a : 모든 제한 사항을 보여줌.

 

-c : 최대 코어 파일 사이즈

 

-d : 프로세스 데이터 세그먼트의 최대 크기

 

-f : shell 의해 만들어질 있는 파일의 최대 크기

 

-s : 최대 스택 크기

 

-p : 파이프 크기

 

-n : 오픈 파일의 최대수

 

-u : 오픈파일의 최대수

 

-v : 최대 가상메모리의

 

 -S : soft 한도

 

-H : hard 한도

 


 

현재 ulimit 설정 상태를 보는 명령어

 

 

Soft 설정 보기

 

[boriwater] /root > # ulimit -a

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

open files                      (-n) 1024

pipe size            (512 bytes, -p) 8

POSIX message queues     (bytes, -q) 819200

real-time priority              (-r) 0

stack size              (kbytes, -s) 10240

cpu time               (seconds, -t) unlimited

max user processes              (-u) 1024

virtual memory          (kbytes, -v) unlimited

file locks                      (-x) unlimited

 

 

Hard 설정 보기

 

[boriwater] /root > # ulimit -Ha

core file size          (blocks, -c) unlimited

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

open files                      (-n) 4096

pipe size            (512 bytes, -p) 8

POSIX message queues     (bytes, -q) 819200

real-time priority              (-r) 0

stack size              (kbytes, -s) unlimited

cpu time               (seconds, -t) unlimited

max user processes              (-u) 14943

virtual memory          (kbytes, -v) unlimited

file locks                      (-x) unlimited

 

 

 


 

항목의 설명

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

 

max user process 또는  opens files 수가 해당 설정 값을 초과하여 동작할 예를 들어 동접자의 증가로 apache 자식 프로세스가 증가하여 1024 초과할 경우 이로 인해 apache hang 현상 등이 발생 있습니다.

 

아래와 같이 변경 하는 방법이 있으나 이는 실제 적용이 되진 않습니다.


[boriwater] /root > # ulimit -u 2048

[boriwater] /root > # ulimit -a

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

open files                      (-n) 1024

pipe size            (512 bytes, -p) 8

POSIX message queues     (bytes, -q) 819200

real-time priority              (-r) 0

stack size              (kbytes, -s) 10240

cpu time               (seconds, -t) unlimited

max user processes              (-u) 2048

virtual memory          (kbytes, -v) unlimited

file locks                      (-x) unlimited

 

위와 같이 보여지더라도 재 로그인 또는 리부팅 시 기본 설정으로 적용 됩니다.


따라서 아래와 같은 방법을 통해 수정 가능합니다.

  

1. ulimit 명령을 통한 변경

-n –u 사용하여 max user process open files 개수를 수정 합니다.

 

boriwater] /root > # ulimit -n 2048

[boriwater] /root > # ulimit -u 4096

[boriwater] /root > # ulimit -a

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

open files                      (-n) 2048

pipe size            (512 bytes, -p) 8

POSIX message queues     (bytes, -q) 819200

real-time priority              (-r) 0

stack size              (kbytes, -s) 10240

cpu time               (seconds, -t) unlimited

max user processes              (-u) 4096

virtual memory          (kbytes, -v) unlimited

file locks                      (-x) unlimited

 

2. /etc/security/limits.conf 설정 파일 수정

 

프로세스 user 별로 설정을 지정할 있으며, 이와 같이 적용 특정 user 해당 설정이 적용 되기에 무분별하게 자원을 많이 쓰게 되는 부분에 대해 보안이 가능합니다.

 

해당 문서 파일에 아래와 같이 기입

 

daemon           soft    nproc          4096

daemon           hard    nproc          4096

 

#user                #soft, hard 지정 # nproc - max number of processes  # 한도 숫자 지정

# End of file

 

설정 파일 내에 작성 방법 지시어에 대한 설명도 간략히 나와 있으므로 참조하시기 바랍니다.

 

3. /etc/profile 수정

 

#ulimit setting

ulimit -u 8192   # max number of process 수정

ulimit -n 2048  # open files 수정

 

적용

[boriwater] /root > # source /etc/profile

 

 

확인

 

[boriwater] /root > # ulimit -a

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

open files                      (-n) 2048

pipe size            (512 bytes, -p) 8

POSIX message queues     (bytes, -q) 819200

real-time priority              (-r) 0

stack size              (kbytes, -s) 10240

cpu time               (seconds, -t) unlimited

max user processes              (-u) 4096

virtual memory          (kbytes, -v) unlimited

file locks                      (-x) unlimited

 

 

[boriwater] /root > # ulimit -aH

core file size          (blocks, -c) unlimited

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

open files                      (-n) 2048

pipe size            (512 bytes, -p) 8

POSIX message queues     (bytes, -q) 819200

real-time priority              (-r) 0

stack size              (kbytes, -s) unlimited

cpu time               (seconds, -t) unlimited

max user processes              (-u) 4096

virtual memory          (kbytes, -v) unlimited

file locks                      (-x) unlimited

번호 제목 글쓴이 날짜 조회 수
226 리눅스 사용자에게 메시지 보내기 file 호스트웨이 2012.10.04 17702
225 리눅스 whereis 명령어 file 호스트웨이 2012.09.28 1634
224 리눅스 tee명령어를 이용하여 디렉토리 목록 저장 file 호스트웨이 2012.09.28 4737
223 서비스 체크 스크립트 호스트웨이 2012.09.28 4537
222 yum을 이용한 X-Window 설치 호스트웨이 2012.09.27 3006
221 iptables를 이용한 ssh 스캐닝 공격 방어 호스트웨이 2012.09.21 3335
220 SFTP 접속 방법 file 호스트웨이 2012.09.21 6902
219 리눅스 tree 명령어 file 호스트웨이 2012.09.21 2931
218 리눅스 APM 소스설치시 Error 및 해결 방법 호스트웨이 2012.09.21 23886
217 리눅스 Ubuntu 네트워크 설정 호스트웨이 2012.09.14 11494
216 리눅스 File 명령어를 통해 파일의 확장자나 속성알아보기 file 호스트웨이 2012.09.14 22311
215 CentOS yum 빠르게 사용하기 호스트웨이 2012.09.14 13267
214 netstat 명령 옵션-2 호스트웨이 2012.09.13 15803
213 chfn 명령어를 통한 사용자 정보변경 file 호스트웨이 2012.09.07 11325
212 LVM 명령 요약 호스트웨이 2012.09.06 31314
211 APM, PHP 컴파일 옵션 확인하기 호스트웨이 2012.09.05 19580
210 CentOS 5/6 에 VMware Tools 설치 방법 호스트웨이 2012.08.31 17053
209 리눅스 bc명령어 file 호스트웨이 2012.08.31 16789
208 cron table의 각 필드 설명 호스트웨이 2012.08.31 12017
207 LILO - Warning: /dev/sda not first disk 에러 발생시 호스트웨이 2012.08.24 11630