sayu.day
Backend

Linux 파일 디스크립터 제한 (ulimit) 실무 가이드

Too many open files 장애를 재현하고 해결하는 실전 점검 순서를 정리합니다.

발행 2025년 12월 30일1150

같은 주제에서 이어 읽기

Docker 멀티스테이지 빌드 최적화 가이드

Backend 안에서 이어지는 글

핵심

파일, 소켓, 파이프는 모두 FD를 사용합니다. 트래픽이 증가하면 FD 한도 초과로 EMFILE/Too many open files가 발생합니다.

문제 해결은 두 축을 같이 봐야 합니다.

  • 한도 조정
  • 커넥션/핸들 누수 제거

점검 순서

  1. 프로세스 실제 한도 확인
cat /proc/<pid>/limits | grep "Max open files"
  1. 사용량 확인
ls /proc/<pid>/fd | wc -l
  1. 시스템 전체 한도 확인
cat /proc/sys/fs/file-max

영구 설정

systemd 서비스

[Service]
LimitNOFILE=65535

커널

# /etc/sysctl.d/99-fd.conf
fs.file-max = 2097152

적용 후 daemon-reload, 재시작, 재확인을 반드시 합니다.

자주 하는 실수

  • 셸에서 ulimit만 올리고 서비스에는 미반영
  • FD 한도만 올리고 keep-alive/timeout 미설정
  • 누수 원인 분석 없이 숫자만 반복 상향

요약

ulimit 문제는 설정 + 코드 문제입니다. 서비스 단(LimitNOFILE) 반영 여부를 먼저 검증하고, 이후 커넥션 관리 정책을 같이 튜닝해야 재발을 막을 수 있습니다.

다음 읽기

이 생각이 이어지는 방향

Backend 더 보기
공유

읽은 뒤의 대화

읽은 뒤의 생각을 이어갑니다

질문, 반론, 조용한 후속 메모를 이 글 아래에 남길 수 있습니다.

sayu.day는 생각과 작업의 흔적을 천천히 정리하는 개인 출판물입니다.
직접 겪고 검토한 내용, 다시 읽을 만한 아이디어, 작업하며 남긴 메모를 모읍니다.
시간이 지난 글은 현재의 판단과 다를 수 있어 업데이트 맥락을 함께 남깁니다.

© 2026 sayu.day