ulimit 이란?

배세훈·2021년 7월 14일
0

Etc/용어

목록 보기
9/16

ulimit 이란?

프로세스가 사용하는 자원에 대한 제어(user limit)를 관리할 수 있게 도와줍니다.
OutOfMemoryError 가 발생했는데 쓰레드를 더 이상 생성할 수 없다는 메시지가 나온다면 이 설정을 의심해 볼 필요가 있습니다.

ulimit에서 자주 설정하게 되는 값은 open file과 max user process 설정입니다. 이 값에 따라 프로그램에서 소켓 커넥션 수, 혹은 생성 가능한 쓰레드 수가 제한됩니다.

- Java에서 동시에 생성 가능한 쓰레드 수는 max user processes를 따라간다.
- Java에서 소켓 통신(HTTP API, JDBC 커넥션 등)은 open file 옵션을 따라간다.
	단, JDK 내부 코드상에서 hard limit 값이 soft limit에 update된다.
- 파이썬의 경우 soft limit 값을 따라간다.

ulimit 확인 방법

# 하드 설정 확인
$ ulimit -a -H

# 소프트 설정 확인
$ ulimit -a -S

예시

소프트 설정과 하드 설정

ulimit 에서 설정할 수 있는 타입에는 두 가지가 있습니다.(soft, hard)

어떤 유저가 할당된 제한 값 이상의 리소스를 사용 할 수는 없습니다.

소프트 값은 0과 하드 limt 사이의 값을 가질 수 있습니다. (0 <= soft limit <= hard limit)

즉, 하드 limit은 소프트 limit들의 최대값 역할을 합니다.

하드 limit은 root 사용자만 값을 증가시킬 수 있습니다.

설정값 변경하는 방법

설정파일(기본 파일 - /etc/security/limits.conf)의 가장 아래쪽에 domain, type, item, value를 적어주시면 됩니다.

profile
성장형 인간

0개의 댓글