Ubuntu 서버가 느리게 실행되고 로그에 "시스템에 열려 있는 파일이 너무 많습니다!"라는 오류가 보고됩니다. 해결 방법!

Ubuntu 운영 및 유지관리에서 흔히 발생하는 함정: "시스템에 열려 있는 파일이 너무 많습니다!"

서버가 느리게 실행되고 종종 520 또는 521 오류가 발생하며, CPU와 메모리 사용량이 높지 않고 하드 디스크 사용량이 충분하지 않습니다. 이러한 문제가 발생하면 많은 사람들이 PHP에 문제가 있다고 생각합니다. 사실 PHP 성능 외에도 파일 시스템 리소스가 고갈되는 또 다른 중요한 요인이 있습니다. 놀랍게도, 맞습니다. Ubuntu에서 열 수 있는 파일 수가 제한을 초과했습니다!

인터넷 검색을 해보니 이런 문제를 겪는 분들이 많더라고요! 이 문제를 빠르게 해결하는 방법을 알려드릴게요!

!" 이 오류는 Linux/Ubuntu 시스템에서 흔히 발생하는 리소스 제한 문제로, 서버가 파일 설명자를 모두 소진하여 새 연결을 열 수 없음을 나타냅니다. CyberPanel 또는 LiteSpeed 환경(예: 웹 서버의 HttpListener)에서 Nginx/Apache/MySQL과 같은 프로세스가 트래픽이 많은 상황에서 너무 많은 소켓/파일을 열어 "열린 파일 수 초과" 충돌을 발생시킵니다. CPU/메모리/하드 디스크는 정상이며, 병목 현상이 설명자(기본 사용자 제한은 1024, 전역 제한은 65536)에 있다는 것이 확인되었습니다. 이로 인해 새 요청이 중단되고 520/504 오류율 50%+가 증폭됩니다. 다행히 ulimit과 sysctl만 조정하면 수정이 적용되며, 적용되기까지 5~10분 정도 걸립니다.

"열린 파일이 너무 많습니다" 오류 문제 해결 및 솔루션: Ubuntu 서버에서 열린 파일 수가 많은 이유 분석

Ubuntu/Linux 서버 관리에서 "시스템에 열려 있는 파일이 너무 많습니다!" 오류는 리소스 고갈의 전형적인 신호로, 시스템의 파일 디스크립터 제한에 도달하여 새 파일이나 소켓 연결이 열리지 않음을 나타냅니다. 로그를 보면 ulimit -n = 65535(사용자/프로세스 제한) 및 /proc/sys/fs/file-max = 65535(전역 시스템 제한)가 설정되어 있지만, lsof | wc -l = 2211319(현재 열려 있는 파일 수)로 상한을 훨씬 초과합니다. 이는 하드웨어 문제(CPU/메모리/하드 디스크는 정상)가 아니라 파일 핸들 누수 또는 동시성이 높은 애플리케이션(예: 웹 서버 및 데이터베이스)이 연결을 즉시 닫지 못하는 누적 현상입니다. Server Fault 및 Ask Ubuntu 커뮤니티에 따르면, 90%와 같은 문제는 Nginx/Apache/MySQL 프로세스 핸들이 해제되지 않아 최대 트래픽 시 트래픽 폭주로 이어져 502/504 오류 또는 서비스 중단을 유발하는 것으로 나타났습니다. 다행히도, 이 문제는 임시/영구적으로 제한을 늘리고 프로세스 진단을 수행하면 빠르게 해결할 수 있습니다.

열린 파일 문제 해결: 누가 무엇을 열었나요?

lsof 도구(이미 설치됨)를 사용하여 프로세스/유형별로 진단합니다.

lsof | wc -l

프로세스별로 열려 있는 파일 수를 확인하여 원인을 찾으세요.

lsof | awk '{print $2}' | sort | uniq -c | sort -nr | head -10 #는 상위 10개 프로세스를 나열합니다.

실시간 모니터링: watch -n 5 'lsof | wc -l' 5초마다 새로 고침하고 성장을 관찰합니다.

시스템의 기본 최대 파일 할당량은 65535입니다. 열려 있는 파일의 수가 65535를 초과하면 열려 있는 모든 파일을 대기열에 넣어야 하며 액세스 작업이 느려집니다.

해결책: 한계를 높이고 근본 원인을 해결하세요

/etc/security/limits.conf 파일을 편집하여 할당량을 늘리세요.

sudo vi /etc/security/limits.conf

맨 아래로 스크롤하여 65535를 모두 4194304로 변경하세요.

그런 다음 /etc/sysctl.conf 파일을 편집합니다.

vi /etc/sysctl.conf

fs.file-max 매개변수를 수정합니다.

fs.file-max = 4194304

신청 프로필:

sudo sysctl -p

모든 설정이 완료되면 sudo reboot를 실행하세요.

재시작 후 속도가 빨라졌습니다!

점수

댓글남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다