open_files_limit은 MySQL 데이터베이스 서버가 동시에 열 수 있는 파일의 최대 수를 정의합니다.
open_files_limit 를 변경해야 하는 경우는 아래와 같습니다.
-
높은 동시 접속 수 : 많은 사용자와 연결되는 웹 애플리케이션이나 대규모 데이터베이스에서 필요합니다.
-
복잡한 쿼리 및 많은 테이블 : 복잡한 JOIN 연산이나 다수의 테이블을 사용하는 데이터베이스에서 파일 핸들이 많이 필요합니다.
-
성능 문제 해결 : Too many open files 오류가 발생하거나 성능 저하가 있을 때, 파일 핸들 수를 늘려야 합니다.
-
InnoDB 및 MyISAM 사용 : InnoDB나 MyISAM 스토리지 엔진을 사용할 때 많은 파일 핸들이 필요합니다.
-
백업 및 복구 작업 : 데이터베이스의 온라인 백업이나 복구 작업 중 많은 파일 핸들이 필요합니다.
-
로그 파일 관리 : 로그 파일이 많거나 빈번한 로그 롤링이 발생할 때 필요합니다.
먼저 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 값이 올바르게 적용되었는 지 확인합니다.
적용 완료. 끗