Today
Total
KoreanEnglishFrenchGermanJapaneseSpanishChinese (Simplified)
관리 메뉴

DB & AWS Knowledge

MySQL및 MariaDB 에서의 max_open_files 및 open_files_limit 의 의의와 AWS RDS, Aurora Cluster 의 제한 사항 본문

MySQL/기타 지식

MySQL및 MariaDB 에서의 max_open_files 및 open_files_limit 의 의의와 AWS RDS, Aurora Cluster 의 제한 사항

`O` 2023. 3. 15. 21:45
728x90
반응형

해당 페이지에서는 MySQL및 MariaDB 에서의 max_open_files 및  open_files_limit 의 의의와 AWS RDS, Aurora Cluster 의 제한 사항을 다룬다.

 

이 페이지는 아래의 MySQL Document 및 Blog 를 참조한다.

 

[1] https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_open_files_limit

 

[2] https://haydenjames.io/could-not-increase-number-of-max_open_files-to-more-than/

 

[3] https://dba.stackexchange.com/questions/86987/mysql-open-files-limit-cannot-change-this-variable?answertab=active#tab-top

 

 

MySQL, MariaDB 의 file open 개념 및 의의

 

 

OS 에서 작동하는 모든 SW 및 시스템들은 OS 파일체계를 따르고 사용하게 된다. DB 도 예외가 아닌데 특히 MySQL, MariaDB 는 쿼리를 통하여 데이터를 조작 할 때, 데이터가 보관된 파일을 지속적으로 열게 된다. 우리가 흔히 쓰는 윈도우에서 word 등의 작업을 할 때, 여러 문서들을 보기 위해서 여러개의 문서 파일들을 워드를 통하여 보는것과 비슷한 개념이다.

 

 

이를 고려해야 하는 이유 및 관련한 MySQL, MariaDB 파라미터

 

 

DB 등의 OS 요소가 아닌 SW 들이 이를 무한정으로 사용하게 되면 당연히 부하가 발생하고 OS 에서 이를 통제하기가 점점 어려워 짐에 따라 나중에 예상치 못한 문제가 발생 할 수 있다. 그래서 MySQL, MariaDB 에서는 이를 제한하기 위한 파라미터가 있는데 open_files_limit 이 그것이다.

 

 

MySQL, MariaDB 가 내부적으로 open file 개수를 조절하는 방법 및 확인 필요 요소

 

 

일반적으로 MySQL 및 MariaDB 에서는 DB 가 테이블 내 데이터를 쿼리들이 사용하면서 이에 따라 테이블 정보가 포함된 file 을 지속적으로 open 하게 된다. 이에 따라 파일 개수가 늘어가면 내부적으로 max_open_files 상태 값을 자체적으로 늘리면서 DB 가 열수 있는 file 을 늘리는데 아래 예시와 같이 한계에 다다를 때가 있다. 이는 max_open_filesopen_files_limit 에 설정된 65536 값을 넘어설 수 없다는 것을 뜻한다.

 

출처 : https://haydenjames.io/could-not-increase-number-of-max_open_files-to-more-than/

 

그래서 이를 늘리는 방법은 위의 [3] 과 같이 /usr/lib/systemd/system/mysqld.service 에 직접 들어가서 limit 항목을 추가 후 이를 open_files_limit 에 반영시켜서 max_open_files 가 더 큰 open_files_limit 값까지 도달 할 수 있게 하는 것이다.

 

 

RDS 및 Aurora Cluster 에서의 제한 사항

 

 

문제는 RDS 및 Aurora Cluster 등의 AWS 의 관리형 서비스에서는 직접 OS 에 들어가서 이러한 값을 바꿀 수 없다.

그렇기 때문에 이 서비스들을 사용 할 때 자신이 사용하는 instance 및 cluster 에서는 최대로 open 할 수 있는 file 이 몇개 인지 고려해야 할 경우가 있다. 그 때는 각 instance 에 설정된 open_files_limit 를 참조해서 확인해야한다.

 

또한 RDS 및 Aurora Cluster 의 Parameter group 에서 이 파라미터를 확인 할 수 있으나 이를 사용자가 변경 할 수 없다.

그렇기에 자체적으로 설정된 open_files_limit 값 한도 내에서 DB 를 사용해야 한다.

 

 

반응형
Comments