2019. 4. 11. 13:51ㆍ리눅스
ulimit : 커널단에서의 소프트웨어 및 하드웨어 한도 설정에 관련 된 명령어이다.
-- ulimit 사용 방법
ulimit [option] value
* 옵션 설명 *
-a : 모든 제한 사항을 보여준다.
-c : 최대 코어 파일 사이즈
-d : 프로세스 데이터 세그먼트의 최대 크기
-f : shell에 의해 만들어질 수 있는 파일의 최대 크기
-s : 최대 스택 크기
-p : 파이프 크기
-n : 오픈 파일의 최대수
-u : 프로세스 최대수
-v : 최대 가상메모리의 량
-- 소프트웨어 한도 조회
ulimit -Sa
core file size (blocks, -c) 0 è 코어파일의 최대크기
data seg size (kbytes, -d) unlimited è 프로세스의 데이타 세그먼트 최대크기
file size (blocks, -f) unlimited è 쉘에서 생성되는 파일일 최대크기
pending signals (-i) 1024
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited è resident set size의 최대크기(메모리 최대크기)
open files (-n) 1024 è open file descriptors의 최대 숫자(열수있는 최대파일수)
pipe size (512 bytes, -p) 8 è 512-바이트 블럭의 파이프 크기
POSIX message queues (bytes, -q) 819200
stack size (kbytes, -s) 10240 è 프로세스의 스택 최대크기
cpu time (seconds, -t) unlimited è 총 누적된 CPU시간(초)
max user processes (-u) 8190 è 단일 유저가 사용가능한 프로세스의 최대갯수
virtual memory (kbytes, -v) unlimited è 쉘에서 사용가능한 가상 메모리의 최대용량
file locks (-x) unlimited
-- 하드웨어 한도 조회
ulimit -Ha
core file size (blocks, -c) 0 è 코어파일의 최대크기
data seg size (kbytes, -d) unlimited è 프로세스의 데이타 세그먼트 최대크기
file size (blocks, -f) unlimited è 쉘에서 생성되는 파일일 최대크기
pending signals (-i) 1024
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited è resident set size의 최대크기 (메모리 최대크기)
open files (-n) 1024 è open file descriptors의 최대 숫자(열수있는 최대파일수)
pipe size (512 bytes, -p) 8 è 512-바이트 블럭의 파이프 크기
POSIX message queues (bytes, -q) 819200
stack size (kbytes, -s) 10240 è 프로세스의 스택 최대크기
cpu time (seconds, -t) unlimited è 총 누적된 CPU시간(초)
max user processes (-u) 8190 è 단일 유저가 사용가능한 프로세스의 최대갯수
virtual memory (kbytes, -v) unlimited è 쉘에서 사용가능한 가상 메모리의 최대용량
file locks (-x) unlimited
-- open files 값을 변경
ulimit -Sn 65536 (소프트웨어 제한 값 변경)
ulimit -Hn 65536 (하드웨어 제한 값 변경)
만약 시스템 부팅 이후에도 변경 된 값의 유지를 원한다면
vi /etc/initscript
---------------------------
ulimit -Hn 65536
ulimit -Sn 65536
eval exec "$4"
---------------------------
■ Ulimit 설정 변경 (최대 오픈 가능한 파일수)
#ulimit -n 4096
위명령어를 치면 최대 오픈 가능한 파일 갯수가 1024개에서 4096개로 변경된 것을 확인 할 수 있다.
참고로 설정 가능한 값은 최대 : 63536 까지 지정이 가능하며 기본값은 1024 이다.
그런데..
ulimit 명령어를 통해 변경한 값은 재부팅을 하게 되면 사라지고 명령어를 입력한 세션에서만 적용이 된다.
즉 Root에서 ulimit -n 4096을 입력하면 root 세션의 사용자만 4096으로 변경되어 있고 다른사용자로 로그인후 ulimit -a
명령어를 치면 1024로 표시되는것을 볼수 있다.
그래서 우리는 재부팅후에도 모든사용자에게 동일하게 파일갯수가 변경하도록 아래와 2개의 설정 파일을 변경하고
재부팅하도록 하자
#vi /etc/security/limits.conf //아래의 4줄을 맨 마지막 줄에 추가
* hard nofile 20000
* soft nofile 20000
root hard nofile 20000
root soft nofile 20000
#vi /etc/pam.d/common-session //아래의 1줄을 맨 마지막 줄에 추가
session required pam_limits.so
적용을 하기 위해서는 재부팅 reboot 이 필요함!
위의 설정을 잠시 설명하자면 /etc/security/limits.conf 파일내 *이 의미하는것은 root를 제외한 모든 사용자에게 적용한다는 의미이며 root가 제외되었으니 추가로 root에 대한 설정을 2줄 추가한 것이다.
뭐 귀찮다고 하면 그냉 저장해 놓고 붙여 넣기 해도 된다.
웹서버가 되었던 메일서버가 되었던 위 설정 누락으로 “Too many open files (24)” 메시지 보는 일은 없도록 하자
'리눅스' 카테고리의 다른 글
CentOS 7 (센트오에스7), RHEL 7(레드햇7) 설치방법 (0) | 2019.04.11 |
---|---|
CentOS 6(센트오에스6), RHEL 6(레드햇6) 설치방법 (0) | 2019.04.11 |
Yum local repository CentOS(센트오에스) 로컬 레포지토리 (0) | 2019.04.11 |
리눅스 LVM 만들기 (우분투)Ubuntu (0) | 2019.04.11 |
리눅스 (CentOS 7, RHEL 7) 티밍 가이드 (0) | 2019.04.10 |