2015.07.29 20:56
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
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
86 | 하드디스크의 배드블럭을 검사하는 명령어 (badblocks) | 호스트웨이 | 2012.03.30 | 21075 |
85 | 현재 설치된 메모리 정보를 확인하는 방법 | 호스트웨이 | 2012.03.30 | 32494 |
84 | Swap 메모리 늘리기 | 호스트웨이 | 2012.03.30 | 67224 |
83 | top 명령어 및 옵션 설명 | 호스트웨이 | 2012.03.27 | 52572 |
82 | arp 명령 사용법 | 호스트웨이 | 2012.03.27 | 28285 |
81 | 서버의 바이오스, 메인보드에서 지원하는 최대 메모리 확인 방법 | 호스트웨이 | 2012.03.23 | 19430 |
80 | VSFTP 에서 사용하는 port를 변경하기 | 호스트웨이 | 2012.03.23 | 39735 |
79 | 포트를 사용중인 프로세스 확인하기 | 호스트웨이 | 2012.03.23 | 19225 |
78 | OSI 7 Layer 의 이해 | 호스트웨이 | 2012.03.23 | 18322 |
77 | vsftp사용 시 root 계정 이용하기 | 호스트웨이 | 2012.03.23 | 18503 |
76 | yum repository 국내 mirror 설정 | 호스트웨이 | 2012.03.23 | 36967 |
75 | scp 명령어를 이용한 파일 복사 및 전송 | 호스트웨이 | 2012.03.16 | 264813 |
74 | at 명령어를 이용한 예약 작업 | 호스트웨이 | 2012.03.16 | 21870 |
73 | history 조회시 '날짜,시간' 표시하기 | 호스트웨이 | 2012.03.16 | 49667 |
72 | 비대해진 로그 파일 내용을 비우는 방법 - /dev/null | 호스트웨이 | 2012.03.16 | 61428 |
71 | grep 명령어 사용하기 | 호스트웨이 | 2012.03.16 | 19215 |
70 | 데비안 백포트 사용해 보기 | 호스트웨이 | 2012.03.16 | 18248 |
69 | 리눅스 서버 누가 언제 무슨 작업을 했는지 확인 방법 | 호스트웨이 | 2012.03.09 | 93574 |
68 | SSH 패스워드 없이 자동 로그인 하는 방법 | 호스트웨이 | 2012.03.09 | 18097 |
67 | DHCP 환경에서의 resolv.conf 초기화 현상 | 호스트웨이 | 2012.03.09 | 23635 |