[Linux] ulimit 과 openfile 설정
ulimit는 유저가(쉘, 프로세스)에 대해서 할당할 자원의 한계를 정하는 것으로 다중 프로그램/사용자를 기본으로 하는 리눅스 시스템에서 과부하를 막아주는 설정이다.
나 같은 경우는 linux서버의 openfile, corefile size를 많이 제어하는데 사용한다.
그 이유는 분산처리 파일 환경, 또는 디비서버를 운영할 경우 동시에 많은 파일들이 읽고 쓰고를 해서 openfile error가 생기는것을 막기 위해서 이다.
기본적으로 hard 설정과 soft 설정이 있는데 각 설정을 보려면 아래의 명령어로 확인한다.
$ ulimit -Ha
$ ulimit -Sa
(하드 설정 전체 보기 / 소프트 설정 전체 보기)
하드는 해당쉘의 최대값을 뜻한다 하면 되고, 소프트는 현재 설정을 말한다 생각하면 된다.
hard 설정의 경우는 root권한으로만 변경 가능
$ ulimit -Sa
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 256
pipe size (512 bytes, -p) 1
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 266
virtual memory (kbytes, -v) unlimited
/etc/security/limits.conf 에 설정 파일이 있으며 파일을 변경하거나 ulimit -Sn 10240 <- 이런 식으로 각 설정별 옵션을 사용해서 변경 가능하면 된다.
수정한 내용의 적용은 해당 유저가 새로운 접속을 시도하면 적용된다.
<참고>
http://blog.naver.com/mklife/150034479727
http://seaking.tistory.com/24
http://coffeenix.net/board_view.php?bd_code=1422