1. ulimit 이란?
ulimit는 리눅스(유닉스)에서 사용자별로 프로세스의 자원 한도를 설정하거나 확인할 수 있는 명령어이다.
위 ulimit soft 값과 hard 값을 비교해보면 hard의 값이 훨신 크게 잡혀 있는 것을 알 수 있다.
사용자가 실행하는 프로세스에 대해 다음과 같은 자원 제한을 설정한다.
- 파일 크기
- 열 수 있는 파일의 최대 수
- 사용 가능 메모리
- CPU 시간
- 프로세스 개수
- 코어 덤프 크기
ulimit [옵션] 값 ( Centos , RHEL 기준)
- a : 모든 제한 사항을 보여줌.
- 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의 최대 숫자(열수 있는 최대 파일 수) ,Too many open files error 발생시 해당값 조절해주면됨
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
2. ulimit의 종류
ulimit은 soft 제한과, hard 제한 두가지로 나뉜다.
- soft : 사용자가 현재 사용할 수 있는 자원의 최대치로, 하드 제한보다 낮게 설정할 수 있다.
일시적으로 변경할 수 있으며 재 로그인하면 기본값으로 변경된다. - hard : 시스템에서 허용하는 자원의 최대치. 관리자를 제외한 일반 사용자는 하드 제한을 초과할 수 없다.
설정방법
1. ulimit 명령을 통한 변경
-n -u를 사용하여 max user process와 open files 개수를 수정한다.
ulimit -n 2048
ulimit -u 4096
ulimit -a
open files (-n) 2048
max user processes (-u) 4096
소프트 제한 변경
ulimit -n 4096
하드 제한 변경 (root 관리자 권한 필요)
ulimit -Hn 8192
ulimit 명령으로 설정한 값은 현재 세션에서만 적용된다. 즉, 재 접속시에는 기본값으로 초기화되기 때문에 영구적으로 설정하러면 /etc/profile 또는 사용자 별 .bashrc 파일에 명령어를 추가해야 한다.
혹은 다음과 같이 limits.conf 파일을 수정하는 방법이 있다.
2. /etc/security/limits.conf 설정 파일 수정
vi /etc/security/limits.conf
username hard nofile 8192
username soft nofile 4096
* soft nproc 4096
* hard nproc 4096
💡 User 별로 설정 가능하다.
3. 확인
재 로그인 or 리부팅할 경우 기본 설정으로 적용된다.
# 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
'DevOps > Linux_리눅스' 카테고리의 다른 글
[Linux] dhcpd not authoritative 문제 해결 (0) | 2024.06.13 |
---|---|
[Linux] 백그라운드, 포그라운드(프로세스 실행) (0) | 2023.07.24 |
[Linux] root 권한 관리 (UID 탐색) (0) | 2023.05.08 |
[Linux] default 계정 삭제 (default 계정 탐색) (0) | 2023.05.02 |
[Linux] 시스템 재부팅시 자동실행되는 shell script (0) | 2023.05.02 |