Ulimit 설정

곽동규·2025년 2월 22일

ulimit 이란?

ulimit은 Linux에서 특정 사용자 또는 프로세스가 사용할 수 있는 시스템 리소스 제한을 설정이다.
주로 파일 핸들 갯수, 프로세스 갯수, 메모리 사용량 등을 제한

ulimit을 설정 이유 예시

  1. 파일 핸들(nofile) 제한이 낮아 많은 파일을 열 수 없는 경우
    대량의 파일을 다루는 웹 서버(Nginx, Apache), DB(MySQL, PostgreSQL), 메시지 큐(RabbitMQ, Kafka)
    ulimit -n 값이 낮으면 "Too many open files" 오류 발생
    프로세스(nproc) 개수가 부족하여 실행할 수 없는 경우

test 계정에 대한 설정 적용 (전체 계정 적용 시 test가 아닌 * 로 설정)

vi /etc/security/limits.conf

test hard nofile 1000000
test soft nofile 1000000
test hard nproc 1000000
test soft nproc 1000000
  1. 다중 프로세스를 실행하는 애플리케이션 서버, 컨테이너 환경
    ulimit -u 값이 낮으면 "Resource temporarily unavailable" 오류 발생
    스택 크기(stack) 설정이 낮아 프로그램이 크래시 되는 경우

test 계정에 대한 설정 적용

vi /etc/security/limits.conf

test hard stack 10240
test soft stack 10240

ulimit 적용 확인
세션 종료 후 재접속

ulimit -a  # 변경된 설정 확인

ulimit 적정 값 계산

  • 실행 중인 모든 프로세스가 연 파일 갯수 출력
lsof | wc -l
  • 특정 프로세스가 사용하는 파일 갯수를 확인
lsof -p <PID> | wc -l

ulimit 적정 값 추천

  • 웹 서버
    nofile : 65535 이상
  • 데이터베이스
    nofile : 100000 이상
  • 메시지 큐
    nofile : 1000000 이상

0개의 댓글