반응형
"Too many open files" 라는 에러가 발생하였을 때의 조치 방법입니다.
리눅스는 모든 것(파일, 세션 등)을 파일로 취급합니다. 파일 디스크립터는 시스템 에서 파일이나 소켓과 같은 I/O 리소스를 참조할 때 사용되는 번호입니다.
1. max files (nofile)
max files(nofile)는 한 사용자가 열 수 있는 최대 파일 디스크립터 수입니다.
- ulimit -n 명령어를 통해 현재 사용자가 열 수 있는 최대 파일 디스크립터 수를 확인할 수 있습니다.
$ ulimit -n
1024
2. file-max
file-max는 시스템 전체에서 동시에 열 수 있는 최대 파일 디스크립터 수입니다.
-
sysctl명령어나 /proc/sys/fs/file-max파일을 통해 확인할 수 있습니다.
$ cat /proc/sys/fs/file-max
1024
$ sysctl -a | grep file-max
fs.file-max = 1024
3. Too many open files 에러 해결
3-1. max files 설정
사용자가 열 수 있는 최대 파일 디스크립터 수 max files는 일시적으로 아래의 방법으로 일시적으로 조정하거나, 영구적으로 변경할 수 있습니다.
1) ulimit -n을 이용하여 일시적으로 조정
$ ulimit -n 4096
2) /etc/security/limits.conf 파일을 수정하여 영구적으로 조정
$ vi /etc/security/limits.conf
username soft nofile 4096
username hard nofile 8192
# username 은 사용자 계정
# soft, hard는 각각 soft limit, hard limit을 의미
-
soft limit : 사용자가 자신의 제한을 초과할 수 있는 최대 값입니다. 사용자는 최대의 4096개의 파일 디스크립터를 열 수 있으나, 4096개를 초과하게 되면 경고 메시지가 발생합니다.
-
hard limit : 사용자가 열 수 있는 최대 파일 디스크립터 수입니다. 8192개를 초과하게 되면 추가적인 리소스 사용이 차단됩니다.
3-2. file-max 설정
1) sysctl 명령어를 통한 일시적인 조정
$ sysctl -w fs.file-max=65535
-
시스템 전체에서 동시에 열 수 있는 최대 파일 디스크립터 수를 65535로 일시적으로 변경
2) /etc/sysctl.conf 파일을 수정하여 영구적으로 조정
$ vi /etc/sysctl.conf
...
fs.file-max = 65535
$ sysctl -p
-
해당 파일 하단에 fs.file-max = 65535를 추가하고, sysctl -p 명령어를 통해 변경사항을 적용합니다.
반응형
'서버 운영 > Linux' 카테고리의 다른 글
Nginx 설정 - Proxy 설정, SSL 설정, 로드밸런싱 설정 (0) | 2024.08.01 |
---|---|
RHEL 6, RHEL 7 주요 차이점 (0) | 2024.04.09 |
리눅스 LVM (0) | 2024.04.09 |
리눅스 LVM 명령어 (0) | 2024.04.09 |
Rocky Linux 8.X 에서 Nginx 컴파일 설치 (Nginx 1.24) (0) | 2024.03.22 |