본문 바로가기
  • ANALOG CODE
  • AnalogCode
개발

InfluxDB "too many open files" 에러

by 아날로그코더 2023. 3. 17.
반응형

InfluxDB를 사용중에 어느날 데이터를 쓰는 중에 too many open files 에러가 발생하고 있는걸 발견하였다. 여기서 ulimit를 이용하여 서버 설정을 확인 / 변경하고 이것을 영구적으로 설정할 수 있는 방법을 설명한다.

InfluxDB

버전 Influx OSS 2.4

 

- 사용하는 InfluxDB 의 읽기 / 쓰기 요청 건수이다.

Write 12,000 건 / 분
Query 900 건 / 분

 

NodeJS로 만든 프로세스에서 InfluxDB로 데이터를 넣는 중에 꽤 자주 아래와 같은 에러가 발생하였다.

unexpected error writing points to database: opening shard previously failed with: [shard 3254] open /mnt/db/influx/engine/data/ce148b0a4b87968c/autogen/3254/index/7/MANIFEST: too many open files

too many open files 에러가 발생하고 있었다.

 

 

- too many open files 에러

리눅스에는 프로세스마다 열 수 있는 파일의 갯수 제한이 있다.

too many open files는 이것을 초과했다는 에러이다.

 

ulimit 명령어로 확인을 해보니 1024로 설정이 되어 있었다.

$ ulimit -a
...
open files               (-n) 1024
...

 

이 값을 바로 수정하려면 아래와 같이 명령어를 입력해주면 된다.

$ ulimit -n 65535

그리고 다시 확인해보면 값이 변경된 걸 알 수 있다.

 

$ ulimit -a

 

하지만 시스템이 재부팅되거나 다시 세션을 연결하면 초기화가 된다.

 

이 값을 영구적으로 변경하기 위해 /etc/security/limits.conf 파일을 수정하여 준다.

 

/etc/security/limits.conf

아래 2줄을 추가해준다.

*   hard   nofile   65535
*   soft    nofile   65536

 

그러면 재부팅이 되더라도 이 세팅이 유지된다.

 

결과

- InfluxDB에서 현재 오픈된 파일 갯수 확인

// PID에는 influxdb의 PID 값을 넣는다.

$ lsof -p PID | wc -l
1130

open files 가 1130 이다.

처음에 최대 open files 의 갯수가 1024였는데 부족한 것이었다.

 

이렇게 수정하여 주니 too many open files 에러가 말끔히 사라졌다.

 

반응형

댓글