Linux ETC

ulimit 설정 관련

2015.07.29 20:56

호스트웨이 조회 수:60036

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

번호 제목 글쓴이 날짜 조회 수
386 rpm에서 원하는 파일만 풀어서 사용하기 호스트웨이 2015.09.19 444
385 모든 파일 안의 문자열 치환하기 호스트웨이 2015.09.21 444
384 hostname 변경하기 호스트웨이 2015.09.17 476
383 /proc/sys/net/ipv4 활용 서버보안 -1- 호스트웨이 2015.09.17 476
382 500 FTP server shut down 문제 해결 호스트웨이 2015.09.09 484
381 우분투 서버에 JDK7 설치하기 호스트웨이 2015.09.13 503
380 리눅스 hdd 속도 알아보기 호스트웨이 2015.09.17 505
379 top 사용 추가 tip 호스트웨이 2015.09.15 512
378 사용하고 있던 외장하드가 마운트 되지 않는 경우 호스트웨이 2015.09.22 525
377 패키지에 포함된 리스트 확인하기 호스트웨이 2012.12.07 527
376 /proc/sys/net/ipv4 활용 서버보안 -3- 호스트웨이 2015.09.22 674
375 cdp 백업 프로세스 관련 호스트웨이 2015.09.07 694
374 Linux vmstat 명령어 호스트웨이 2015.09.08 717
373 kornet SMTP 서비스 종료에 따른 구글 SMTP 활용 방안 file 호스트웨이 2016.04.28 745
372 터미널 접속 시 한글이 깨질 때 호스트웨이 2015.09.23 750
371 bios 타이머 및 시간 설정 호스트웨이 2015.09.18 760
370 Route 경로 추가 호스트웨이 2015.09.18 771
369 /dev/null 복구 호스트웨이 2015.09.21 861
368 서버시간 매시간마다 동기화 설정 호스트웨이 2015.09.23 864
367 kbd_mode 명령어를 통해 인식중인 키보드모드 출력 및 변경하기 file 호스트웨이 2012.11.06 885