Today
Total
KoreanEnglishFrenchGermanJapaneseSpanishChinese (Simplified)
관리 메뉴

DB & AWS Knowledge

Aurora 에서의 thread_cache_size 및 thread_created 값 조절 본문

AWS 및 클라우드 지식/AWS RDS, Aurora 및 관련 지식

Aurora 에서의 thread_cache_size 및 thread_created 값 조절

`O` 2022. 5. 31. 02:56
728x90
반응형

해당 페이지에서는 Aurora 에서 thread_cache_size 및 thread_created 값 관리 영역에 대하여 다룬다.

 

해당 내용은 아래의 공식 문서를 참조하여 기재한다.

 

- https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Reference.html#AuroraMySQL.Reference.Parameters.Inapplicable

 

또한 이전 개시글중에서 아래의 개시글을 먼저 읽고 오면 좋다.

 

- 이전 게시글

 

2021.03.12 - [MySQL/아키텍처 및 내부 구조] - MySQL / MariaDB 기본 아키텍처 (Engine)

 

2022.04.22 - [AWS 및 클라우드 지식/AWS 지식] - RDS 및 Aurora Cluster 개요

 

 

thread_cache_size 및 thread_created 값의 의의

 

 

Linux 기반 OS 에서의 MySQL 및 MariaDB 에서는 ORACLE 및 PostgreSQL 과는 다르게 외부에서 DB 로 접속하는 클라이언트에 프로세스가 아닌 스레드를 분배하게 된다.

 

이 때, 스레드를 분배할 때도, 스레드도 결국 OS 에서 가지고 있는 자원을 사용해야 하는데 이 때, DB 에서는 자체적으로 이러한 스레드를 분배 시, DB 에서 확보한 메모리에서 미리 분배할 스레드를 가지고 있는 것과 외부 접속 요청때 마다 스레드를 만드는 속도가 확연히 차이가 난다. (당연히 미리 분배할 스레드를 메모리에서 미리 만들어 주는게 좋다.)

 

이 때, 메모리에서 분배할 스레드를 얼마나 가지고 있을 지 설정 할 수 있는 파라미터가 있는데 이 파라미터가 바로 '

thread_cache_size' 다. 만일 메모리에서 미리 만들어둔 thread_cache_size 에서 스레드가 소진되고 계속하여 접속되는 클라이언트 요청 때 마다 자체적인 스레드를 만들게 되며, 이 때에서는 누적으로 'thread_created ' 값이 증가하게 된다.

 

그렇기에 DB 운영 시, 메모리가 충분한 상태에서 다량의 클라이언트 접속 시점에서 성능 지연 및 병목 발생 시, thread_cache_size 값을 조절하는 것이 하나의 해결방법이 될 수 있다.

 

 

RDS 및 Aurora 에서의 thread_cache_size

 

 

다른 관련 게시글에서 RDS 및 Aurora 는 둘다 RDS 콘솔에 포함되어도 내부적인 작동구조는 다르다는 것을 설명했었다.

파라미터영역도 마찬가지인데 thread_cache_size 는 파라미터 그룹에서 둘다 조절이 가능해도 Aurora 에서는 위의Document 와 같이 실제로는 반영이 되지 않는 특징이 있다.

 

즉, 해당 파라미터는 Aurora 에서 자체적으로 관리를 하는 특징이 있다.

위의 단락에서 살펴보면 짐작 하겠지만, Aurora 에서는 인스턴스에 할당된 메모리 기준으로 thread_cache_size 를 조절하는데 이 때, thread_created 가 증가하면 그만큼의 접속 지점 에서의 지연 문제가 발생하므로 thread_cache_size 를 상황에 따라 동적으로 조절하여 thread_created 를 0 으로 조절하려는 특징이 있다.

 

다만, 메모리공간이 적은 인스턴스는 thread_cache_size 를 처음에는 매우 적게 할당하거나 0으로 할당하는 특징이 있다.

 

예를 들어, db.t3.small 인스턴스 type 에 설정된 기본 thread_cache_size 값은 수동 값 설정이 없을 시, 0 으로 자동 할당되어서 클라이언트 접속이 새로 들어오는 데로 결국엔 thread_created 가 증가하게 되는 걸 예상 할 수 있다.

 

	MySQL [(none)]> show variables like '%thread_cache_size%';
	+-------------------+-------+
	| Variable_name     | Value |
	+-------------------+-------+
	| thread_cache_size | 0     |
	+-------------------+-------+
	1 row in set (0.00 sec)

 

그렇기에 Aurora 를 사용 시, 자신이 사용하는 인스턴스의 메모리가 적다면 결국 thread_created 조절은 어렵다는 것을 예상 할 수 있다.

반응형
Comments