hello

too many open files 오류

"Too many open files" 오류는 프로세스가 열 수 있는 파일 수의 한계를 초과했을 때 발생하는 문제입니다. 우분투(Ubuntu)에서는 이 파일 디스크립터 수를 제한하는 설정이 있고, 이를 수정해서 해결할 수 있습니다.


📌 원인 요약

  • 파일, 소켓 등을 열기만 하고 닫지 않았을 때
  • 서버나 멀티쓰레드/비동기 프로그램에서 동시 작업이 많을 때
  • 로그 파일 등을 계속 새로 열면서 닫지 않음

✅ 해결 방법 (Ubuntu 기준)

1. 현재 파일 열기 제한 확인

ulimit -n

보통 기본값은 1024입니다.


2. 일시적으로 파일 열기 제한 늘리기

터미널에서 아래 명령 실행:

ulimit -n 65535
단, 이 방법은 현재 세션에만 적용되며, 로그아웃하면 초기화됩니다.

3. 영구적으로 변경하기

/etc/security/limits.conf 수정

sudo nano /etc/security/limits.conf

맨 아래에 아래 두 줄 추가 (사용자 이름에 맞게 수정):

your_username soft nofile 65535
your_username hard nofile 65535

예:

ubuntu soft nofile 65535
ubuntu hard nofile 65535

② PAM 설정 확인

sudo nano /etc/pam.d/common-session

맨 아래에 다음 줄이 있는지 확인, 없으면 추가:

session required pam_limits.so
sudo nano /etc/systemd/user.conf

다음 라인 추가 또는 수정:

DefaultLimitNOFILE=65535
/etc/systemd/system.conf 도 같이 수정하면 좋습니다.

4. 적용하기

변경 후 적용하려면 재부팅하거나 로그아웃 후 다시 로그인합니다.


🔍 참고: 어떤 프로세스가 많이 열고 있는지 확인

lsof | awk '{print $2}' | sort | uniq -c | sort -nr | head

또는 특정 프로세스의 파일 열기 수 확인:

lsof -p <PID>

필요하면 코드나 서버 설정도 같이 봐줄 수 있어요. 어떤 환경에서 이 오류가 발생하는지 알려주시면 더 정확하게 도와드릴게요!