blog

AWS - RDS 모니터링 Tips

날짜: 2024-08-07

목록으로


AWS RDS에서 CPU 사용률이 높은 상태일 때, 원인을 파악하기 위한 절차는 여러 단계로 이루어집니다.

여기에는 모니터링, 로그 분석, 쿼리 최적화 등 다양한 방법이 포함됩니다. 다음은 그 절차에 대한 단계별 가이드입니다.

1. CloudWatch 모니터링

먼저, AWS CloudWatch를 사용하여 CPU 사용률과 관련된 메트릭을 확인합니다.

  1. CloudWatch 콘솔로 이동:
    • AWS Management Console에서 CloudWatch를 선택합니다.
  2. RDS 인스턴스 메트릭 확인:
    • Metrics 섹션에서 RDS를 선택합니다.
    • 해당 RDS 인스턴스를 선택하고 CPUUtilization, DBConnections, FreeableMemory 등의 메트릭을 확인합니다.
    • 특정 시간대에 CPU 사용률이 급증한 경우를 찾아냅니다.

2. Performance Insights 사용

AWS Performance Insights를 사용하면 데이터베이스의 성능을 상세히 분석할 수 있습니다.

  1. Performance Insights 활성화:
    • RDS 콘솔에서 해당 데이터베이스 인스턴스를 선택합니다.
    • Monitoring 탭에서 Performance Insights가 활성화되어 있는지 확인합니다. 비활성화되어 있다면 활성화합니다.
  2. 쿼리 성능 분석:
    • Performance Insights 콘솔로 이동하여 CPU 사용률이 높은 기간을 선택합니다.
    • CPU 사용률이 높은 동안 실행된 쿼리 목록을 확인하고, 가장 많은 리소스를 소비하는 쿼리를 찾습니다.
    • 각 쿼리의 실행 시간, 호출 빈도, 대기 시간 등을 분석합니다.

3. 로그 분석

RDS 인스턴스의 로그를 분석하여 성능 문제의 원인을 찾습니다.

  1. 로그 파일 확인:
    • RDS 콘솔에서 해당 인스턴스를 선택하고 Logs & events 탭으로 이동합니다.
    • Error logs, General logs, Slow query logs 등을 다운로드하여 분석합니다.
  2. Slow Query Log 분석:
    • Slow query log에서 느리게 실행되는 쿼리를 확인합니다.
    • 해당 쿼리의 실행 빈도와 실행 시간을 확인하고, 인덱스가 필요한지, 쿼리 구조가 비효율적인지 등을 검토합니다.

4. 데이터베이스 설정 확인

데이터베이스 설정이 최적화되지 않았을 경우 CPU 사용률이 높아질 수 있습니다.

  1. 파라미터 그룹 설정 확인:
    • RDS 콘솔에서 해당 인스턴스를 선택하고 Parameter groups 탭으로 이동합니다.
    • 사용 중인 파라미터 그룹을 확인하고, 필요한 경우 파라미터를 조정합니다. 예를 들어, max_connections, innodb_buffer_pool_size 등의 설정을 검토합니다.

5. 인덱스와 쿼리 최적화

쿼리 및 인덱스를 최적화하여 성능을 향상시킵니다.

  1. 인덱스 확인 및 추가:
    • 가장 많이 사용되는 테이블에 적절한 인덱스가 설정되어 있는지 확인합니다.
    • 필요시 인덱스를 추가하여 쿼리 성능을 향상시킵니다.
  2. 쿼리 리팩토링:
    • Performance Insights와 Slow Query Log에서 확인된 비효율적인 쿼리를 최적화합니다.
    • 쿼리의 실행 계획을 분석하여 불필요한 풀 테이블 스캔 등을 피합니다.

6. 필요시 인스턴스 스케일 업

위의 방법으로도 해결되지 않는다면 인스턴스를 스케일 업하여 리소스를 추가합니다.

  1. 인스턴스 유형 변경:
    • RDS 콘솔에서 해당 인스턴스를 선택하고 Modify 버튼을 클릭합니다.
    • 더 높은 성능을 제공하는 인스턴스 유형으로 변경합니다.

요약

  1. CloudWatch를 통해 CPU 사용률을 모니터링하고 이상 현상을 발견합니다.
  2. Performance Insights를 통해 가장 많은 리소스를 사용하는 쿼리를 분석합니다.
  3. 로그 파일을 분석하여 성능 문제의 원인을 찾습니다.
  4. 데이터베이스 설정을 최적화합니다.
  5. 인덱스와 쿼리를 최적화합니다.
  6. 필요 시 인스턴스 유형을 스케일 업합니다.

목록으로