기술 정보
home
채널 소개
home

open error.: Too many open files 대응 방안

문서 유형
장애 해결
분야
관리/환경설정
키워드
linux
nofile
prlimit
Too many open files
적용 제품 버전
5SP1FS01
5SP1FS02
5SP1FS03
5SP1FS04
5SP1FS06
6FS01
6FS02
6FS03
6FS04
6FS05
6FS06
6FS07
6FS07PS
7FS01
7FS02
7FS02PS
1 more property

현상

Tibero 기동 및 운용 중 아래와 같은 메시지와 함께 open error가 발생했습니다.
open error.: Too many open files
SQL
복사
해당 메시지는 프로세스가 열 수 있는 파일 디스크립터(File Descriptor)의 개수가 시스템 설정값을 초과했을 시 발생했습니다.

원인

Tibero 6 이하 버전의 설치 가이드에서는 기본적으로 계정의 nofile 설정값을 아래와 같이 안내하고 있습니다:
Soft limit: 1024
Hard limit: 2048
이 설정을 유지한 채 시간이 지나면서 데이터파일의 개수가 점차 증가하게 되면, 설정된 nofile 값을 초과하게 되어 오류가 발생할 수 있습니다.
예를 들어, soft limit이 1024로 설정된 경우 약 100개 정도의 데이터파일을 추가하는 것만으로도 오류가 재현되는 사례가 있습니다.

테스트 방법

아래는 open error.: Too many open files 발생하는 예시입니다.
BEGIN FOR i IN 1..100 LOOP EXECUTE IMMEDIATE 'ALTER TABLESPACE usr ADD DATAFILE SIZE 1M'; END LOOP; END; *********************************************************************** * Warning: * Current maximum number of open files = 1024 * Required maximum number of open files for Tibero process = 1026 Recommend adjusting maximum number of open files. *********************************************************************** *********************************************************************** * Warning: * Current maximum number of open files = 1024 * Required maximum number of open files for Tibero process = 1036 Recommend adjusting maximum number of open files. ***********************************************************************
SQL
복사

해결

Tibero 운영 중 nofile 제한으로 인한 오류가 발생한 경우, 다음과 같은 방식으로 조치가 가능합니다.
1. 영구 조치
/etc/security/limits.conf 파일을 수정한 후, DB를 재기동합니다.
2. 임시 조치
prlimit 명령어를 이용하여 동적으로 수정할 수 있습니다. 단, 이 방법은 프로세스 재기동 시 초기화되므로 임시 방안입니다.
재기동이 어려운 경우, 기동 중인 프로세스에 대해 prlimit 명령어를 사용하여 파일 디스크립터 제한값을 동적으로 조정할 수 있습니다.
1. 현재 설정값 확인
prlimit -p <PID>
SQL
복사
2. 예시 출력
[tibero@mtdb01 ~]$ prlimit -p 96653 RESOURCE DESCRIPTION SOFT HARD UNITS NOFILE max number of open files 1024 4096
SQL
복사
3. soft limit을 hard limit 수준까지 확장
prlimit --pid 96653 --nofile=4096:4096
SQL
복사
4. 변경 확인
[tibero@mtdb01 ~]$ prlimit --pid 96653 RESOURCE DESCRIPTION SOFT HARD UNITS NOFILE max number of open files 4096 4096
SQL
복사
5. 오류 사례 (권한 부족)
[tibero@mtdb01 ~]$ prlimit --pid 96672 --nofile=65530:65530 prlimit: failed to set the NOFILE resource limit: 명령을 허용하지 않음
SQL
복사
이와 같이 명령어가 실패할 경우, root 권한으로 명령을 실행해야 합니다.
참고
Tibero 프로세스는 기동 시 계정의 nofile 설정 값을 참조하기 때문에, 이후 ulimit 값을 변경하더라도 이미 실행 중인 프로세스에는 적용되지 않습니다.