본문 바로가기
Work/Server

[Linux] ulimit 설정 (Max user process, open files)

Ulimit이란?

사용자별(user) 프로세스의 자원 한도(Limit)를 설정하는 명령

soft한도, hard한도 두가지로 나뉨

 

 

Soft  : 새로운 프로그램을 생성하면 기본(default)으로 적용되는 한도

Hard : 소프트한도에서 최대(Max) 늘릴 수 있는 한도

 

자바프로세스의 JVM Server나 apache, tomcat 등의 프로세스를 기동중 OOM (Out Of Memory) 가 발생하였지만,

메모리 부족이 아닌경우, 커널에서 설정한 자원한도에 도달했기때문이므로, 

Ulimit을 설정해주셔야 합니다.

 

 

Ulimit 조회 

 

Ulimit [조회 옵션] 값


-a : 모든 제한 사항을 보여줌.
-c : 최대 코어 파일 사이즈
-d : 프로세스 데이터 세그먼트의 최대 크기
-f : shell에 의해 만들어질 수 있는 파일의 최대 크기
-s : 최대 스택 크기
-p : 파이프 크기
-n : 오픈 파일의 최대수
-u : 오픈파일의 최대수
-v : 최대 가상메모리의 양
-S : soft 한도
-H : hard 한도

 

Ulimit 항목내용 

core file size          : 코어파일의 최대크기
data seg size          : 프로세스의 데이터 세그먼트 최대크기
scheduling priority   : 쉘에서 생성되는 파일의 최대 크기
max memory size    : resident set size의 최대 크기(메모리 최대크기)
open files              : 한 프로세스에서 열 수 있는 open file descriptor의 최대 숫자(열수 있는 최대 파일 수)
pipe size               : 512-바이트 블럭의 파이프 크기
cpu time               : 총 누적된 CPU 시간(초)
max user processes : 단일 유저가 사용가능한 프로세스의 최대 갯수
virtual memory       : 쉘에서 사용가능 한 가상 메모리의 최대 용량

 

 

 

Open Files 설정 

- open files : 한 프로세스에서 열 수 있는 open file descriptor의 최대 숫자 (열수 있는 최대 파일 수)

1) 즉시 설정 : ulimit -SHn 65535

2) 영구 설정 : 

# /etc/security/limits.conf 수정
# user 사용자 

user        soft     nofile          65535
user        hard     nofile          65535

# 모든(*) 사용자
*           soft     nofile          65535
*           hard     nofile          65535


 

 

 

Max User Processes 설정

- max user processes : 단일 유저가 사용가능한 프로세스의 최대 갯수

1) 즉시 설정 : ulimit -SHu 65535

2) 영구 설정 : 

# /etc/security/limits.conf 수정

#user 사용자 

user        soft     nproc          65535
user        hard     nproc          65535

# 모든(*) 사용자
*           soft     nproc          65535
*           hard     nproc          65535