메뉴 닫기

open_files_limit 값 늘리기(MySQL 8.0)

open_files_limit은 MySQL 데이터베이스 서버가 동시에 열 수 있는 파일의 최대 수를 정의합니다.

open_files_limit 를 변경해야 하는 경우는 아래와 같습니다.

  1. 높은 동시 접속 수 : 많은 사용자와 연결되는 웹 애플리케이션이나 대규모 데이터베이스에서 필요합니다.

  2. 복잡한 쿼리 및 많은 테이블 : 복잡한 JOIN 연산이나 다수의 테이블을 사용하는 데이터베이스에서 파일 핸들이 많이 필요합니다.

  3. 성능 문제 해결 : Too many open files 오류가 발생하거나 성능 저하가 있을 때, 파일 핸들 수를 늘려야 합니다.

  4. InnoDB 및 MyISAM 사용 : InnoDB나 MyISAM 스토리지 엔진을 사용할 때 많은 파일 핸들이 필요합니다.

  5. 백업 및 복구 작업 : 데이터베이스의 온라인 백업이나 복구 작업 중 많은 파일 핸들이 필요합니다.

  6. 로그 파일 관리 : 로그 파일이 많거나 빈번한 로그 롤링이 발생할 때 필요합니다.

 

먼저 mysql에 로그인하여 open_files_limit를 확인해줍니다.

mysql> SHOW VARIABLES LIKE ‘open_files_limit’;

1. 현재 파일 핸들 수 확인 : 먼저, 현재 시스템과 세션의 파일 핸들 수 제한을 확인합니다.

 

 

2. 파일 핸들 수 제한 변경

# vi /etc/security/limits.conf

파일에 소프트와 하드 제한을 설정합니다. // * 는 전체

다시 로그인 후, 확인해줍니다.

 

변경 후, 세션의 파일 핸들 수를 확인하여 설정이 반영되었는지 확인합니다.

 
 

3. MySQL 설정 파일 수정

MySQL의 open_files_limit를 증가시키기 위해 MySQL 설정 파일을 수정합니다.

수정 후 재시작을 하였으나,

open_files_limit을 10000으로 설정된 상태에서 100000으로 증가시키려 했지만 실패했다는 것을 의미합니다.

MySQL이 요청한 파일 핸들 수 제한을 시스템의 현재 설정에 맞게 적용할 수 없다는 것을 나타냅니다.

 

4. 시스템 파일 핸들 수 제한 증가 : 시스템의 최대 파일 핸들 수 증가시키기 위해 sysctl.conf 파일을 수정해줍니다.

# vi /etc/sysctl.conf

변경 사항을 적용해줍니다.

# sysctl -p

fs.file-max = 100000

 

5. systemd 서비스 파일 수정 : MySQL이 systemd 로 관리되는 경우, MySQL 서비스 파일을 수정하여 LimitNOFILE 값을 설정합니다.

서비스 경로 파일 경로는 아래의 명령어로 확인가능합니다.

# sudo systemctl status mysqld | grep ‘Loaded:’

Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; preset: disabled)

 

변경 후 systemd 데몬을 재로드하고 MySQL을 재시작합니다.

# systemctl daemon-reload

# systemctl restart mysqld

 

6. 설정 확인 : MySQL에 로그인하여 open_files_limit 값이 올바르게 적용되었는 지 확인합니다.

적용 완료. 끗

 

 

 

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x