Amazon RDS Aurora for MySQL 최적화

이민석's avatar
Sep 24, 2024
Amazon RDS Aurora for MySQL 최적화

개요

RDS Aurora for MySQL(5.7 Community Eiditon)을 사용하고 있습니다.
규격으로는 메모리 최적화 타입인 db.r5.large를 사용하고 있는데, 오버 스펙인 것 같습니다.

타입 변경에 앞서 확인 리스트를 통해서 어떤 타입으로 변경해야 할지에 대해서 찾아보겠습니다.

확인 리스트

  • 연결 사용률 체크

  • 모니터링 체크 - CPUUtilization, FreeableMemory 지표

  • 향상된 모니터링 체크 - 여유 메모리, 활성 메모리

  • OS 프로세스 목록

연결 사용률 체크

RDS Aurora for MySQL의 경우,
다음의 쿼리를 통해서 Connection, MaxConnection을 조회할 수 있습니다.
사용 중인 db.r5.large의 경우 각각 47, 1000의 값을 보여주고 있었습니다.

  • Connection

    SELECT count(*) as count FROM INFORMATION_SCHEMA.PROCESSLIST;

  • MaxConnection

    SELECT @@max_connections;

모니터링 체크

RDS는 Hypervisor 위에서 VM(Virtual Machine)을 생성하여 실행됩니다.
기본적으로 제공되는 CloudWatch Metric은 이 Hypervisor에서 지표를 수집합니다.
따라서 vCPU, MEM이 작은 RDS 타입의 경우 실제와 지표 상의 오차가 클 수 있습니다.

시나리오
현재 db.r5.large 타입의 RDS Aurora를 사용하고 있습니다.
db.r5.large는 vCPU 2, MEM 16 GiB인데 오버 스펙이 아닌지 확인하고자 합니다.

CloudWatch Metric에서 제공하는 다양한 지표들을 참고할 수 있습니다.- [Ref], [Ref]
타입 변경 시 vCPU, MEM가 바뀔 것이기 때문에 몇 가지 주요 지표만 살펴볼 것입니다.

유용한 RDS Metric
CPUUtilization, FreeableMemory, FreeLocalStorage, DatabaseConnections
ReadLatency, WriteLatency, DMLLatency, SelectLatency, CommitLatency, BufferCacheHitRatio

외부 변수가 없다면 vCPU, MEM 변경으로 가장 직접적인 영향을 받게될
CPUUtilization, FreeableMemory, DatabaseConnection을 먼저 확인하였습니다.
3가지 지표에 대해서 1/3/6/12 개월의 구간별 평균으로 대시보드를 구성했습니다.

Metric

Min

Avg

Max

CPUUtilization

8

10

12

FreeableMemory

55

63

66

DatabaseConnection

20

55

60

CPUUtilization, DatabaseConnection은 그 사용율이 각각 10%, 5%에 불과합니다.
하지만 FreeableMemory는 60%를 웃돌기 때문에 향상된 모니터링*을 통해서 세부적인 확인이 필요했습니다.

db.r5.large 타입의 경우 MaxConnection이 1,000개 이기 때문에 DatabaseConnection에도 큰 여유가 남습니다.

CPUUtilization과 별개로 vCPU 수량은 RDS의 쿼리 동시처리량을 의미합니다.
따라서 vCPU감소로 인해 쿼리 실행과 관련한 Latency가 증가될 우려가 있어 기존의 ReadLatency, WriteLatency, DMLLatency, SelectLatency, CommitLatency를 확인하였습니다.

또한 BufferCacheHitRatio지표를 통해서 현재 캐시 효율성을 점검하였습니다.

Metric

Min

Avg

Max

ReadLatency

WriteLatency

DMLLatency

SelectLatency

CommitLatency

BufferCacheHitRatio

전체 지표에서 10ms 미만의 Latency를 보여줬으머
BufferCacheHitRatio 또한 99.9% 이상의 적중률을 보여주고 있었습니다.
약간 작은 타입의 RDS로 변경해도 큰 무리가 없을 것으로 보였습니다.

향상된 모니터링 체크

사전에 향상된 모니터링이 활성화 되어 있어야 합니다. - [Ref], [Ref]
앞서 모니터링 체크 단계를 통해서 FreeableMemory 지표가 이상함을 확인했습니다.
따라서 향상된 모니터링을 이용해서 메모리 관련 매트릭을 추가 확인하였습니다.

… 더 공부 필요

RDS OS 프로세스 모니터링 체크

사전에 향상된 모니터링이 활성화 되어 있어야 합니다. - [Ref], [Ref]
앞서 향상된 모니터링 체크를 통해서 …를 확인하였습니다.
구체적으로 어떤 프로세스가 문제인지 확인하기 위해서 OS 지표 모니터링을 사용할 수 있습니다. - [Ref]

[OS 프로세스 지표] - [Ref]

  • VIRT - 프로세스의 가상 크기

  • RES - 프로세스에서 사용 중인 실제 물리적 메모리

  • CPU% - 프로세스에서 사용 중인 총 CPU 대역폭의 백분율

  • MEM% - 프로세스에서 사용 중인 총 메모리의 백분율

Share article
RSSPowered by inblog